電話連結服務

發出電話通告

以下操作都需先於CHT會員中心註冊,並登入中華電信IoT智慧聯網大平台網站中進行操作。

1.簡單電話通告

可以使用callout API來從系統中主動撥打電話給用戶,用戶接聽後可以聽到指定的語音訊息,可用於像是空氣品質超標警告、氣溫過高提醒等等這些應用。
例如我們要透過申請的服務號碼主動撥打電話給用戶034240005及034240010,可以使用下列的JSON資料:
用戶034240005及034240010就會接到來話號碼為租用的服務號碼028192000的來電,接起來後,就會聽到以女性聲音的語音播放text屬性中指定的文字。repeat屬性是設定播放會重複3次後再掛斷電話。
將資料輸入callout API後,系統會回應執行的結果。結果中包含此通電話的處理識別碼(groupId),此數值會與後續在MQTT calloutResult topic中接收到用戶應答狀態中的識別碼(groupId)相對應,範例執行結果如下:
若想要接收用戶是否有接聽通告電話的狀態,可以先使用MQTT Client訂閱calloutResult topic,然後再次透過JSON發送電話通告資料,就可以接到通話狀態的通告,範例如下:
每一個用戶電話都會有一個對應的MQTT訊息回報通話的狀態。要注意的是,如果被叫用戶進入語音信箱,系統將歸類為「通告電話已接聽」的狀態,status屬性值為answered狀態

2.互動式電話通告

互動式電話通話是指用戶在接到通告電話時,可以在電話中利用電話上的數字按鍵與系統進行互動,例如在接到簡單的問卷調查通告電話時,用戶可使用電話數字鍵輸入回答選項。
創客需要透過MQTT的callEvent及callAction topic與系統互動,動態產生要播放給用戶聽的語音及接收用戶回應的電話數字按鍵事件。例如,請在callout API輸入下列的內容:
JSON資料中ivrData物件中包含nextNode屬性時,原先callout API中定義的各項屬性值,例如text或是repeat屬性值將不再有作用,只有創客透過MQTT callAction中設定的屬性值才有作用。
RESTful callout API會回傳如下面的回應結果:
也可以使用MQTT透過calloutResult topic接收各個被叫電話的應答狀態:
每一個用戶電話都會有一個對應的MQTT訊息回報通話的狀態。要注意的是,如果被叫用戶進入語音信箱,系統將歸類為「通告電話已接聽」的狀態,status屬性值為answered狀態。
由於要處理電話與用戶互動的相關功能,還需要使用MQTT訂閱callEvent topic及在收到對應的事件時,發送訊息到callAction topic。
例如用戶A電話號碼034240005接起了這通可進行互動的電話通告,首先會在callEvent topic收到下列的訊息:
訊息中的type屬性值為calloutEvent,代表是由callout電話被接通後產生的訊息。再來,創客會從callEvent topic接收到用戶互動請求通知:
訊息中表示目前系統執行到MAIN節點。此時創客可以透過MQTT程式在callAction topic中回應訊息,注意回應訊息的id值要與接收到訊息的id值相同,範例如下:
callAction topic可以使用的屬性值,請參考文件中有關MQTT callAction的詳細說明。待用戶按下數字按鍵後,會再從callEvent中收到用戶的回應訊息:
由node屬性得知,用戶回應的是電話按鍵1,對應的是MyAskNode節點,創客可以將用戶的問卷回答記錄下來。再來要再回應用戶訊息,一樣將訊息送到callAction topic中,範例如下:
回應系統的訊息中包含了nextNode:"END"屬性,代表在播放完text屬性的文字後,系統回自行掛斷電話。
在電話被掛斷後,會從callEvent topic中接收到電話結束的通知訊息,範例如下: