azure - 第二个 ConversationUpdate 事件将在用户第一次输入之后发生?

标签 azure botframework

我在 Azure 门户上测试我的机器人(机器人 channel 注册/机器人管理/网络聊天中的测试)。 第二个 ConversationUpdate 事件将在用户第一次输入之后发生,如下所示,

click StartOver ant Azure Portal WebChat The second ConversationUpdate event will follow at the back of user first input? Azure 的 Webchat 步骤如下,

  1. 点击“重新开始”
  2. 机器人获取第一个 ConversationUpdate、memberAdd 机器人
  3. 用户输入文本
  4. 机器人获取用户输入文本
  5. 机器人获取第二个 ConversationUpdate,成员添加用户

但是模拟器工作正常,有 2 个 ConversationUpdate 事件并等待用户输入。 botframework-emulator 步骤如下,

  1. 点击“开始新对话”
  2. 机器人获取第一个 ConversationUpdate、memberAdd 机器人
  3. 机器人获取第二个 ConversationUpdate,成员添加用户
  4. 用户输入文本
  5. 机器人获取用户输入文本

我想在第二次 ConversationUpdate 到来时向用户发送欢迎消息(包括用户名,例如嗨,造雨者欢迎...)。 用户在 azure 网络聊天中输入后将发送欢迎消息。 我该如何解决这个问题?

谢谢。

最佳答案

这是这里发布的一个常见问题;是的,conversationUpdate 事件在模拟器和网络聊天之间没有以相同的方式抛出,这非常令人不安。

在网络聊天中向您的用户发送欢迎信息

I want send welcome message(include user's name, like hi, rainmaker welcome ...) to user when second ConversationUpdate was coming. The welcome message will send after user input in azure webchat. How can i fix this problem?

如果您需要在用户开始说话之前发送欢迎消息以及有关该用户的一些信息,您可以使用网络聊天的backchannel功能来传递这些信息信息,然后捕获消息并发送您的欢迎消息。

前端需要几行代码,因此无法用于 Azure 网络聊天测试器。但它在网络聊天实现上运行良好,请参阅下面的示例。

旁注:如果您不需要有关用户的信息,您仍然可以使用您收到的第一个 conversationUpdate

示例

示例代码:我做了一个有关此的演示,您可以在那里获取它:https://github.com/nrobert/Bot-Language-Demo

要点:

1。前方发送的反向 channel 消息 here

在示例中,我传递了区域设置信息:

botConnectionSettings.postActivity({
    type: 'event',
    from: { id: 'userid' },
    locale: chatLocale,
    name: 'localeSelectionEvent',
    value: chatLocale
}).subscribe(function (id) { console.log('event language "' + chatLocale + '" selection sent'); });

2。在机器人级别收到的消息here

else if (activity.Type == ActivityTypes.Event && activity.ChannelId == "webchat")
{
    var receivedEvent = activity.AsEventActivity();

    if ("localeSelectionEvent".Equals(receivedEvent.Name, StringComparison.InvariantCultureIgnoreCase))
    {
        // Send your welcome message here, using the special information you would have put in the event message...

    }
}

关于azure - 第二个 ConversationUpdate 事件将在用户第一次输入之后发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363035/

相关文章:

azure - 从逻辑应用中的服务总线获取内容

ssl - Azure 上具有共享 SSL 证书的单站点

azure - 使用 Azure 平台的 ARR 反向代理

azure - 无法确定函数入口点

c# - 如何跟踪 LUIS 服务的每个最终用户的配额使用情况?

azure - 如何在Azure中配置A类型记录或IP地址到静态网站

azure - 如何在 Azure 中实现多个应用服务的高可用性

c# - 如何使用 C# 在瀑布对话框中调用 QnA Maker?

c# - 机器人仿真器框架无法解析服务

java - 在 Microsoft botframework Android 虚拟助手客户端中提供语音 channel secret