Directline API消息发送给Microsoft Bot

时间:2018-10-12 06:35:18

标签: azure botframework direct-line-botframework

我已经使用LUIS在azure服务中创建了该机器人,该机器人用作聊天机器人并可以使用对话框创建对话。

有时,我正尝试使用 Direct Line API 3.0 将消息推送到聊天机器人,而我正在使用Postman将消息发送到bot。

我遵循了https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-send-activity?view=azure-bot-service-4.0页面上的指示

我能够以bot身份向对话发送消息,下面是我从Postman发送消息并获得成功回复的图片。

enter image description here

但是我的问题是,在发送消息后,即使不是用户消息,该机器人也会尝试进行分析。 Bot开始从默认的消息处理程序发送消息,如下所示,

enter image description here

即使成功发送了消息,我的机器人也会触发默认消息处理程序,该消息处理程序只会在用户消息中发生,而在机器人消息中不会发生。

我还检查了网络聊天频道,它不会触发此默认消息处理程序。仅在DirectLine API中会发生这种情况,任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您应该将消息发送为“事件”,而不是将消息发送为“消息”类型。 这样,您的MessagesController会将其视为Event的ActivityType而不是Message,并且您可以根据需要进行处理,而不会浪费实际的消息处理量 如果您想发送不同类型的事件以使其更轻松,则可以通过在json中为“名称”字段提供值来“命名”事件。 第三,如果您需要在消息中包含数据,则可以在json的“值”字段中提供一个值。

standard webchat client的github页面上有一些有关发送事件的重要信息。也许可以更清楚地了解json。

您可以阅读有关'event' activity type here

的更多信息

您给json发送的消息看起来像这样:

{
    "type": "event",
    "from": {
        "id": "user1"
    },
    "name": "theEvent",
    "value": "someDataMyBotNeeds"
}