我正試圖在系統中實現「保持呼叫」功能。我查看了this question和一些twilio文檔,推薦這樣做的方法是將呼叫出列,這將自動播放保留音樂,然後在保持完成(取消保留)時從隊列中檢索。將來自twilio客戶端的撥出電話置於保留的電話(獲取電話端呼叫Sid)
當我有來自移動電話的來電時,這對我的twilio客戶端來說非常好,我可以將電話出列,並且所有工作都正常。
但是,當我從twilio客戶端向移動設備發出呼叫時,如果我更新呼叫以發出出隊指令,我會聽到客戶端本身持有音樂,並且手機會斷開連接。我想這是因爲我已將呼叫的客戶端設置爲保留。所以問題是如何獲得呼叫的移動分支的呼叫sid。
我試着通過ParentCallId查詢CallResource,但是在傳出調用時不會返回任何東西。有任何想法嗎?
調用客戶端上發起了:
var params = {
To: num
};
console.log('Calling ' + num + '...');
Twilio.Device.connect(params);
的連接API回調使用一個簡單的撥號動詞。對連接節省CallId的
客戶端代碼:
$scope.hold = function() {
$scope.status = 'Hold';
$scope.message = 'Putting on hold...';
if ($scope.outgoing_call_sid) {
return $http.get(serviceBase + 'api/twilio/hold?callid=' + $scope.outgoing_call_sid);
}
};
服務器端保持API調用:
public IHttpActionResult Hold(string callid) {/
//callid = GetLegCallId(callid); //Try to replace with child call
CallResource.Update(new UpdateCallOptions(callid) { Url = ConfigurationManager.AppSettings["ngrokUrl"] + "/api/twilio/enqueue", Method = HttpMethod.Get });
return Ok();
}
代碼得到任何暫停按鈕點擊
Twilio.Device.connect(function (conn) {
if (conn._direction === 'OUTGOING') {
$scope.outgoing_call_sid = conn.parameters.CallSid;
$scope.number = conn.message.To;
} else {
$scope.incoming_call_sid = conn.parameters.CallSid;
$scope.number = conn.parameters.From;
}
$scope.message = 'In call with ' + $scope.number;
$scope.status = 'InCall';
});
客戶端代碼兒童電話:
public string GetLegCallId(string callId)
{
var calls = CallResource.Read(new ReadCallOptions() { ParentCallSid = callId });
if (calls.GetEnumerator().Current != null)
return calls.GetEnumerator().Current.Sid;
}
當你說你試圖通過parentCallId查詢通話資源時,你使用了哪些代碼?你可以與我們分享嗎? – philnash
增加了原始文章的代碼。我正在使用C#.net,但認爲應該即使你已經習慣了PHP/node/etc。 – Shailesh
嗯,那看起來很好。你什麼時候運行這個代碼?在調用開始時是否正確? – philnash