当前位置: 首页 > 知识库问答 >
问题:

欢迎消息不启动的Microsoft Bot(使用框架v4)托管在LivePerson使用直拨电话(不是网络聊天)

金阳曜
2023-03-14

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

  • https://blog.botframework.com/2018/07/12/how-to-properly-send-a-greeting-message-and-common-issues-from-customers/

这个问题不是WebChat问题,而是一个直连问题,它使用名为LivePerson的第三方来托管生活在Azure中的bot,并通过直连连接。因此,我不控制客户端代码(就像我使用html/JavaScript编写/托管bot一样)。然而,这里的要点是“不要使用conversationUpdate”,我正在我的机器人中使用它,但请继续阅读。。。

我正在使用Direct Line在LivePerson中托管我的Microsoft v4 Bot。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中不工作。

查看LivePerson的文档,他们有一个“欢迎事件”部分,讨论机器人如何向配置为“聊天”的机器人的用户致意(这是LivePerson中该机器人的配置方式)

仔细查看聊天聊天机器人是如何启动聊天的,文档中指出:

当聊天被路由到代理时,聊天会话被视为已启动。最佳做法是由代理提供第一个响应。在此场景中,没有来自使用者的文本需要解析,因此默认的“欢迎”事件被用作bot的起点,以提示用户提供输入并推进对话。确保您的bot中有一个“入口点”,用于响应新聊天客户发送的默认“欢迎”操作。

然后这个代码:

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

仅供参考:LivePerson上下文中的“代理”可以指实际的人或机器人。两者都被视为“代理”,当您向LivePerson添加新代理时,可用的类型之一是“bot”。所以在这个例子中,代理并不意味着人。

我不太确定我的bot(使用bot框架v4和自适应对话框)需要如何配置/实现,以便有一个响应此欢迎消息的入口点。

我知道我不能使用conversationUpdate(或在adaptive dialog speak中,OnConversationUpdateActivity()),但我不太确定我需要使用哪个adaptive dialog(或其他方式)截取LivePerson发送给我的机器人的json欢迎消息。。。OnEventActivity()?OnMessageActivity()?还有别的吗?

谢谢!

共有1个答案

胡志
2023-03-14

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

 类似资料:
  • 我正在开发一个基于微软bot框架的多渠道bot(专注于web和电报)(https://docs.microsoft.com/en-us/azure/bot-service/?view=azure-bot-service-4.0) 我被用户收到的最初消息所困扰。我的机器人基于Microsoft发布的复杂机器人:https://github.com/Microsoft/BotFramework-Sam

  • 我想从应用程序拨打电话。 是否可以将选项限制为仅从内置电话应用程序呼叫,而不将Viber,Skype或Whatsapp显示为选项? 以下是我的代码: 我想看起来像这样: 而不是这样(如果我已经安装了Viber和Skype): 我尝试使用以下代码: 这让Skype成为一种选择,我也不知道为什么?

  • 本文向大家介绍WordPress 启用最受欢迎的社交网络,包括了WordPress 启用最受欢迎的社交网络的使用技巧和注意事项,需要的朋友参考一下 示例 您将在仪表板中获得以下文件: 这就是您在代码中检索它的方式            

  • 所以我做了一个机器人,它会在一个频道里向新成员发送欢迎信息。我的代码应该工作,因为它没有在我的控制台上发送任何错误,但是我的机器人没有发送欢迎消息。 我尝试了很多东西: > 使嵌入对象成为对象(nope) 做了4个长的不同代码(都不工作) 我在用discord.js@v12 代码:

  • 1.2 项目架构 一个由 faygo 创建的项目基本包含如下几部分: 新建框架实例 app := faygo.New("myapp", "0.1") 编写接口操作 type Index struct { Id int `param:"<in:path> <required> <desc:ID> <range: 0:10>"` Title st

  • CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。 它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库, 以及简单的接口和逻辑结构。通过减少代码量,CodeIgniter 让你更加专注 于你的创造性工作。 CodeIgniter 是为谁准备的? CodeIgniter 就是你所需要的,如果... 你想要一个小巧的框架; 你需要出色的性能; 你需要广泛