大家好~
今天会用实作的方式去认识 Dialogflow ES 的 Fulfillment 与 Events,
Fulfillment 会用 Webhook 去使用我们写好的 API 服务,
Events 的部分会用 Fulfillment 去调用 Events 的方式进行。
Fulfillment 流程:
不过 Inline Editor 目前仅支援 Node.js,
有兴趣可以参考这篇官方文件。
接下来就是用 Fulfillment 的 Webhook 来进行实作罗~
点击 Fulfillment 设定 Webhook 的 URL 与一些验证身份相关的资料。
然後到要启用 Webhook 的 Intent,
将 Enable webhook call for this intent
启用。
Webhook 可用的 Response 具有以下种类:
官方有在文件内提供各个 Webhook response 的范例喔~
先复制一个 Text response
测试看看。
public function test(Request $request)
{
// 顺便把 Request body log 出来看一下
Log::info($request->all());
$jsonResponse = [
"fulfillmentMessages" => [
[
"text" => [
"text" => [
"Text response from webhook"
]
]
]
]
];
return $jsonResponse;
}
成功~
DEFAULT RESPONSE
的 Response 是我们刚刚复制的 Text response
。
至於刚刚 Log 出来的 Request body 如下:
{
"responseId": "daaa8ea0-c010-4320-8c2c-838a0fa80e0c-87175b38",
"queryResult": {
"queryText": "我要测试 Fulfillment",
"parameters": [],
"allRequiredParamsPresent": true,
"fulfillmentMessages": {
"0": {
"text": {
"text": {}
}
}
},
"outputContexts": {
"0": {
"name": "projects/ironman2021-328402/locations/asia-northeast1/agent/sessions/e4de3606-4f99-1204-f7d2-3abfd0c11bd5/contexts/__system_counters__",
"parameters": {
"no-input": 0,
"no-match": 0
}
}
},
"intent": {
"name": "projects/ironman2021-328402/locations/asia-northeast1/agent/intents/5f0a7fd1-5349-4044-be2e-5dd1ef8d0bb3",
"displayName": "Fulfillment - Test"
},
"intentDetectionConfidence": 0,
"languageCode": "zh-tw",
"sentimentAnalysisResult": {
"queryTextSentiment": {
"score": 0,
"magnitude": 0
}
}
},
"originalDetectIntentRequest": {
"source": "DIALOGFLOW_CONSOLE",
"payload": []
},
"session": "projects/ironman2021-328402/locations/asia-northeast1/agent/sessions/e4de3606-4f99-1204-f7d2-3abfd0c11bd5"
}
之後篇章再去使用 Request body 的内容做应用,
这里先认识一下 Fulfillment 如何使用。
Events 有两种:
Event 流程:
Intent A
配对。Intent A
配对成功後会发送 Webhook request。实作环节~
建立一个新的 Intent,
等等我们用 Event response 去调用这个 Intent 做回覆。
在 Intent 的 Events 内新增一个 Custom events,
直接键入你所想要的 Event 名称就好。
设定一个 Text Response,
等等会看到这个 Response~
复制 Event Response 来修改。
public function test()
{
Log::info($request->all());
$jsonResponse = [
"followupEventInput" => [
"name" => "Custom-event-test",
"parameters" => [
"parameter1" => "这是第一个 Parameter",
"parameter2" => "这是第二个 Parameter"
],
"languageCode" => "zh-TW"
]
];
return $jsonResponse;
}
name
的 Value 是我们要调用的 Event 名称,
parameters
的 Value 则写入刚刚在 Intent 的 Response 内调用的 $parameter1
与 $parameter2
。
测试一下~
成功~
今天先这样啦!
若文章有任何问题,
还请大家不吝赐教!
大家明天见!
>>: Day28 Gin with SMTP Server
学习一个新领域时,因为还不了解全貌,通常会不知道该怎麽『正确』下关键字的搜寻方向,因此迷失在庞大的...
Elasticsearch在Uber的Marketplace Dynamics核心数据系统中扮演着关...
SuiteFlow SuiteFlow 可以用来客制化不同的工作流程(workflow). Work...
在应用程序中有许多向资料库读取资料的动作,为了增加程序效能, 有 2 个方向可以调整。 第 1 种是...
为什麽要刷题? 在经历过了二十天左右的刷题练习经验,我们从不同的题目中尝试了各种有趣的程序题目。 ...