我正在尝试添加将出站呼叫转移到任务队列的选项。对于最初排队,然后由工作人员接听的呼入电话,我让它工作得很好。但是当我尝试在拨出电话上做同样的事情时,电话就会掉线。
这就是我目前用来将呼叫放回队列的方法。(C#)
更新进行中的通话
await CallResource.UpdateAsync(
pathSid: sid,
url: new Uri($"{_CallbackUrl}/EnqueueTransfer/{department}")
);
回调响应
var response = new VoiceResponse();
response.Play(new Uri("**URL**/please_wait_recording.Mp3"));
Enqueue enqueue = new Enqueue(workflowSid: _workflowSid);
enqueue.Task($"{{\"selected_department\":\"{department.ToLower()}\"}}");
response.Append(enqueue);
return new TwiMLResult(response);
关于为什么这仅适用于呼入电话以及我如何让它适用于呼出电话的任何想法?
我的出站是使用 js 客户端创建的
let newCall = await device.connect({
params: {
To: formatNumber(number),
From: worker.attributes?.contact_uri,
WorkerTeam: worker.attributes?.team,
WorkerDepartment: worker.attributes?.department
}
});
#### 更新 ####
当我转移已经转移的呼出电话时,上面的代码适用于呼入和呼出电话。呼叫从客户电话掉线,座席被重定向到队列。我尝试使用以下方法更新呼叫资源:
var Call2 = await CallResource.FetchAsync(pathSid: transfer.CallSid);
ResourceSet<CallResource> calls;
string sid= transfer.CallSid;
calls = await CallResource.ReadAsync(parentCallSid: transfer.CallSid);
if (Call2.Direction.ToLower() == "inbound")
{
sid = calls.FirstOrDefault().Sid;
}
await CallResource.UpdateAsync(
pathSid: sid,
url: new Uri($"{_CallbackUrl}/Transfer/{transfer.Team}")
);