在使用对话流的聊天机器人对话中,有没有办法让机器人先说话?

Posted

技术标签:

【中文标题】在使用对话流的聊天机器人对话中,有没有办法让机器人先说话?【英文标题】:In a chatbot conversation using dialogflow, Is there a way to make the bot speak first? 【发布时间】:2018-12-13 12:18:11 【问题描述】:

是否可以格式化对话,以便机器人在 Web 演示集成中使用对话流发起对话?

目标是说出类似“嗨,我是机器人,我可以做 x”之类的话来确定它是聊天机器人而不是人类。

任何人都可以为此提出任何想法吗?

【问题讨论】:

您是否尝试在意图中使用欢迎事件? 这个dialogflow.com/docs/events#default_welcome_intent ? Sir @RogersonNazário 我应该如何在意图中使用欢迎事件,以便机器人首先响应? 【参考方案1】:

    如果您使用 API 以外的其他工具与 Dialogflow 代理(Slack、Facebook Messenger 等)进行交互,则需要在控制台的“intents”下添加适当的事件(例如“Facebook Welcome”事件)。

    有关通过 API 与您的 Dialogflow 代理进行交互,请参见下文。

在API interaction quickstart documentation 中,Dialogflow 为您提供了 SessionClient 的 detectIntent 方法,用于与您的机器人共享消息。

每种语言都有不同的解决方案。但在抽象层面上,您希望更改发送到 Dialogflow 的请求对象,以包含“欢迎”事件(不需要输入消息),正如 Omegastick 所述。

例如,在 Node.js 中,您的请求对象将如下所示:

// The text query request.
        const request = 
            session: sessionPath,
            queryInput: 
                event: 
                    name: "Welcome",
                    languageCode: languageCode
                
            ,
        ;

这假设您在 Dialogflow 控制台中设置了适当的意图来处理欢迎事件。默认提供一个,您可以观察到。

您还可以添加上下文,以便您的代理根据某些条件给出不同的问候消息。

【讨论】:

【参考方案2】:

您可以设置欢迎意图,然后发送包含event 参数的/query 请求。将event 参数设置为WELCOME,您的聊天机器人将响应您设置的任何对话打开方式。

更多信息在这里:https://dialogflow.com/docs/events

【讨论】:

当我创建了一个欢迎意图时,我做了一个“欢迎”事件,我收到错误消息:“带有空上下文和事件‘[WELCOME]’的意图已经存在”。我检查了所有意图仍然存在。之前我删除了一个受欢迎的意图是这个错误背后的原因吗? 我不确定,也许你应该把它作为一个单独的问题发布。您是否尝试过创建新代理并使用默认的欢迎意图? 先生,我无法通过任何给定的解决方案实现所述输出。有没有其他办法? @Vadorequest 抱歉,我对 Facebook、Google Assistant 等集成没有任何经验,所以我无法告诉你这些,但通过 Web API 进行交互时答案有效。它是在 v2 API 发布之前编写的,我对 v2 API 没有任何经验,所以我自己无法更新答案。随意编辑问题。 @Vadorequest WELCOME 事件不会自行触发。要触发它,您需要向 Dialogflow(旧 API 上的 /query)发送一个请求,并将 event 参数设置为 WELCOME

以上是关于在使用对话流的聊天机器人对话中,有没有办法让机器人先说话?的主要内容,如果未能解决你的问题,请参考以下文章

如何在聊天机器人中不使用对话框流程提供输入和输出响应?

将 botkit 用于 Slack 机器人,有没有办法在对话中更新消息?

[BotFramework]:如何在瀑布对话框中捕获/提取通过 C# 网络聊天机器人中呈现的自适应卡片提交的值?

如何存储和检索对话流的聊天记录?

打造一个window桌面应用:在线聊天对话机器人

MS BotBuilder:机器人如何在网络聊天开始时接收参数并发起对话