用于填充广告的Webhook

时间:2018-03-31 15:40:57

标签: python node.js dialogflow chatbot

我在对话框流中填充插槽/参数时遇到问题。我无法搜索任何关于如何使用webhooks / backend-code进行参数填充的好文档。

我的用例是,我想提取date,但如果用户没有提供YEAR,那么它应该询问用户“哪一年?”。然后将其填入date

我正在使用$date.partial作为value因此它为年份部分提供了UUUU,但是如何提示用户提供年份以便我可以填写年份获取完整日期的参数。

enter image description here

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

有时将参数设置为required是不够的,因为您不需要存在该参数,但是您需要以特定格式使用它,可以使用{替代方法{1}}。

有多个步骤,但一旦您熟悉它,您就会非常快速地完成。

1)创建2个新意图:events& Year - Confirmation

2)在第一个意图中添加一个事件:Intent>活动> Year - Confirmed(或任何你喜欢的名字)

3)添加输出背景ask-year

4)设置回复,要求用户输入年份:year-confirmation

5)设置参数:

  • 名称:日期
  • 实体: -
  • 价值 Please provide the year...(这将来自事件数据,您将从后端发送)

enter image description here

6)在您的第二个意图#ask-year.date上,添加为输入上下文Year - Confirmed(前一个意图的输出)

7)设置与主要目标相同的操作:year-confirmation

8)添加一些可以匹配年份的培训短语:

  • 2017(@ sys.number:year)
  • 年份为@ sys.number:year(使用此模板模式)

enter image description here

现在你将insurance作为参数。

9)添加一个额外参数:

  • 名称:日期
  • 实体: -
  • 价值 $year(这将来自年度确认背景)

enter image description here

10)在你的后端,当你收到未完成的日期时,你应该发送#year-confirmation.date事件。

Node.js示例,我不知道python

ask-year

现在,当日期不完整时,将触发事件,执行const apiai = require('apiai'); const client = apiai('my-dev-token'); function sendEvent(data) { const request = client.eventRequest(data, { sessionId: 'current-session' }); request.on('response', response => { // Push message to your UI console.log(response.result.fulfillment.speech); // Please provide the year... }); request.on('error', error => { console.error('Event error: ', error); }); request.end(); } /* ... */ // Your insurance action handler function insuranceHandler(result) { const { parameters } = result; if(parameters.date || parameters.date.includes('UUUU')) { // Or whatever check for invalid year // Send previous date as data, so you will have it in the event response return sendEvent({ name: 'ask-year', data: { date: parameters.date } }); } // Year comes from `ask-year` intent if(parameters.year) parameters.date = parameters.date.replace('UUUU', parameters.year); // Do whatever you need } 并要求您提供年份。提供一个后,您的回复将执行Year - Confirmation意图。现在,您的后端将收到带有附加参数Year - Confirmed

insurance操作

答案 1 :(得分:-2)

选中标有Required的参数旁边的框,然后点击参数右侧的Add prompt并添加提示Which year?