使用 Direct Line(非 WebChat)在 LivePerson 中托管的 Microsoft Bot(使用框架 v4)未触发欢迎消息

Welcome Message not firing for Microsoft Bot (using framework v4) hosted in LivePerson using Direct Line (NOT WebChat)

首先,在 WebChat 的上下文中已经有很多关于这个主题的文章,并且有一些修复显示了实现。这是一个非常好的 link:

此问题不是 WebChat 问题,而是使用名为 LivePerson 的第 3 方托管位于 Azure 中并通过 Direct Line 连接的机器人的 Direct Line 问题。因此,我不控制客户端代码(就像我是 writing/hosting 使用 html/JavaScript 的机器人一样)。但是,这里要注意的是“不要使用 conversationUpdate”,我在我的机器人中使用它,但请继续阅读...

我正在使用 Direct Line 在 LivePerson 中托管我的 Microsoft v4 Bot。该机器人使用自适应对话框欢迎用户并在用户使用 OnConversationUpdateActivity() 发送任何输入之前向他们提问:

public RootDialog(IConfiguration configuration, IMiddlewareApiFacade middlewareApi, IBotTelemetryClient telemetryClient) : base(nameof(RootDialog))
{
    var rootDialog = new AdaptiveDialog(nameof(RootDialog))
    {
        ...
        Triggers = new List<OnCondition>()
            new OnConversationUpdateActivity()
            {
                Actions = WelcomeUserSteps("${Greeting()}")
            }
            ...
    }
    
    private static List<Dialog> WelcomeUserSteps(string message)
        {
            return new List<Dialog>()
            {
                // Iterate through membersAdded list and greet user added to the conversation.
                new Foreach()
                {
                    ItemsProperty = "turn.activity.membersAdded",
                    Actions = new List<Dialog>()
                    {
                        // Note: Some channels send two conversation update events - one for the Bot added to the conversation and another for user.
                        // Filter cases where the bot itself is the recipient of the message. 
                        new IfCondition()
                        {
                            Condition = "$foreach.value.name != turn.activity.recipient.name",
                            Actions = new List<Dialog>()
                            {
                                new SendActivity(message),
                                new BeginDialog(nameof(WelcomeDialog))
                            }
                        }
                    }
                }
            };
        }
    }
}

当 运行 机器人在本地使用模拟器或 运行 来自 Azure 测试网络聊天的机器人时,这工作正常,但它在 LivePerson 中不起作用。

我已经成功连接并测试了通过 Direct Line 从 LivePerson 到机器人的连接:

但是,当机器人启动并通过 LivePerson 的聊天访问它时,欢迎消息不会触发(应该有一条欢迎消息,然后是来自机器人的红色方块所在的问题):

看看 LivePerson 的文档,他们有一个 "The Welcome Event" 部分讨论了机器人向用户问候配置为“聊天”的机器人(这就是这个机器人在 LivePerson 中的配置方式)

仔细查看聊天对话机器人如何开始聊天,文档指出:

A chat conversation is considered started when the chat is routed to an agent. Best practice is for the agent to provide the first response. In this scenario, there is no text from the consumer to parse, thus the default ‘WELCOME’ event is utilized as a start point for the bot to prompt the user to provide input and progress the conversation. Ensure you have an ‘entry point’ in your bot that responds to the default ‘WELCOME’ action send by a new chat customer.

然后这个代码:

{
  // ...
  "type": "message",
  "text": "",
  "channelData": {
    "action": {
      "name": "WELCOME"
    }
  }
}

仅供参考:LivePerson 上下文中的“代理”可以表示真实的人或机器人。两者都被视为“代理”,当您向 LivePerson 添加新代理时,其中一种可用类型是“机器人”。所以在这个例子中agent并不代表person

我不太确定我的机器人(使用机器人框架 v4 和自适应对话框)需要如何 configured/implemented 才能有一个入口点来响应此欢迎消息。

我知道我不能使用 conversationUpdate(或者在自适应对话中,OnConversationUpdateActivity()),但我不太确定我需要使用哪个自适应对话(或其他方式)以某种方式拦截 json 欢迎消息由 LivePerson 发送到我的机器人...OnEventActivity()? OnMessageActivity()?还有别的吗?

谢谢!

答案总结在博客post我想通后写的: https://www.michaelgmccarthy.com/2021/03/13/sending-a-welcome-message-in-the-v4-bot-framework-via-direct-line-and-liveperson/