SMS Gateway 的 API
您可以藉由與 IBM Watson™ Assistant 服務之間交換動作和狀態變數,來控制 SMS Gateway 行為和 SMS 階段作業的流程。動作標籤會起始 SMS Gateway 在交談階段作業期間要採取的動作,而 SMS Gateway 會傳送狀態變數,來指出階段作業的性質。
動作標籤
如果要在 SMS Gateway 中起始動作,您可以在 output 內容中以 JSON 格式,在 Watson Assistant 對話節點上定義動作標籤。對於每一個動作,請定義一個
smsAction 內容,這包含兩個部分:command 內容以及選用的 parameter 內容,用來定義屬性給需要屬性的指令。
舉例來說,當觸發一個含有下列動作的節點時,它會將階段作業逾時值設為 200 秒。
{
"output": {
"smsAction": {
"command": "setSessionTimeoutCount",
"parameters":{
"count": 200
}
}
}
}
當觸發含有 smsActSendMedia 的節點時,會啟用 MMS 傳訊。
{
"output": {
"smsAction": {
"command": "smsActSendMedia",
"parameters":{
"mediaURL": [
"https://exampleonly.com/media/l4JyRqcDU93S334KQ/first.gif",
"https://exampleonly.com/media/tK9wGsGc72LcznCSeU/second.gif"
]
}
}
}
}
下表列出您可以在 Watson Assistant 對話中指定的動作,以及您可以定義給每一個動作的任何屬性。
| 動作指令 | 說明 | 屬性 |
|---|---|---|
setSessionTimeoutCount |
更新階段作業逾時值 | count:時間(以秒為單位)。 |
smsActForceNoInputTurn |
不等待來自使用者的輸入,即強行進入新一回的交談。SMS Gateway 會在文字欄位中傳送含有 smsNoInputTurn 的訊息要求,讓您可以將此要求對映至您對話中的意圖。 |
無 |
smsActSetConversationConfig |
套用一組參數,以配置 Watson Assistant 工作區或服務編排引擎。請在動態配置 Watson Assistant 服務或服務編排引擎中進一步瞭解。 | 支援下列所有參數。如需相關資訊,請參閱 SMS Gateway 的 JSON 進階配置內容。
tokenServiceProviderURL
|
terminateSession |
終止相關聯的階段作業 | N/A |
smsActSendMedia |
啟用 MMS 傳訊 | mediaURL:指定要傳送給使用者之可公開存取媒體 URL 的 JSON 陣列。 |
SMS Gateway 所傳送的狀態變數
為了指出 SMS 階段作業中的狀態變更,SMS Gateway 會將環境定義變數放在每一項訊息要求中,來傳送給 Watson Assistant。由於 Watson Assistant 對話是無狀態的,在與 Watson Assistant 的各次交換之間,所有的狀態都是在 SMS Gateway
中維護的。也就是說,對於會談階段作業內的每一回 Watson Assistant 交談,會將 context 區段傳遞給 Watson Assistant,由對話處理或更新,再從 Watson Assistant 收回。
舉例來說,如果 SMS 階段作業中,某一回基本交談只會使用必要值,則 SMS Gateway 會傳送下列的 context 物件。
{
"context": {
"smsTenantPhoneNumber": "+12345556789",
"smsUserPhoneNumber": "+18765554321",
"smsSessionID": "a23de67h-e527-40d5-a867-5c0ce9e72d0d"
}
}
下列狀態變數會放在訊息要求中,由 SMS Gateway 傳送。smsTenantPhoneNumber、smsUserPhoneNumber、smsUserData 和 smsSessionTimeoutCount 值會直接從階段作業 REST API 取回。
| 狀態變數 | 說明 |
|---|---|
smsTenantPhoneNumber |
使用者用來進行傳訊的 SMS Gateway 租戶電話號碼。 |
smsUserPhoneNumber |
使用者與 SMS Gateway 交換訊息時,所使用的電話號碼。 |
smsUserData |
要逐項傳遞給服務編排引擎或 Watson Assistant 服務的資料(JSON 格式)。必須是從 SMS Gateway 租戶啟動階段作業,且資料是透過 REST API 傳送時,才會傳送此變數。 |
smsSessionTimeoutCount |
階段作業逾時值。必須是透過 REST API 來定義逾時值,才會傳送此變數。 |
smsError |
當 SMS Gateway 未能傳送 SMS 訊息時,此變數會包含所發生錯誤的相關詳細資料。 |
smsSessionID |
相關 SMS Gateway 階段作業的 GUID。 |
smsMedia |
mediaURL 的 arraylist 和對應的 mediaContentType。在每一回交談結束時,會清除這個環境定義變數。 |
文字關鍵字
某些事件會觸發 SMS Gateway 將文字關鍵字放在訊息要求中,來傳送給 Watson Assistant。您可以使用這些文字關鍵字,以便在服務編排引擎或分析中進一步處理。
下表列出 SMS Gateway 所傳送的確切文字值,以及會觸發它的事件。
| 文字值 | 事件 |
|---|---|
smsError |
當傳送出埠 SMS 訊息給 SMS 提供者時,如果發生錯誤,則會傳送。 |
smsResponseTimeout |
當使用者未在 smsSessionTimeoutCount 所設定的時間內回應,而發生階段作業逾時時,則會傳送。 |
在 Watson Assistant 對話中設定的變數
您可以在 Watson Assistant 對話內設定下列狀態變數,來修改 SMS Gateway 行為。如果未設定具有相關配置環境變數的變數,則會使用相關環境變數中的值。
| 狀態變數名稱 | 期望值 | 說明 | 相關的環境變數 |
|---|---|---|---|
smsConversationResponseTimeout |
時間(毫秒) | SMS Gateway 等待接收 Watson Assistant 服務回應的時間量(毫秒)。如果超過時間,SMS Gateway 會重新嘗試連接 Watson Assistant 服務。如果仍無法連到服務,則 SMS 回應失敗。1.0.0.5a 版及更新版本。 | WATSON_CONVERSATION_READ_TIMEOUT |