gpt4 book ai didi

javascript - 去电和来电的 Twilio 方向始终为 "inbound"

转载 作者:行者123 更新时间:2023-12-05 07:41:03 32 4
gpt4 key购买 nike

我相信我可能不太了解 Twilio 调用的流程。我有两种情况 - 一种情况是我从浏览器调用电话(传出),第二种情况是我从手机调用电话到浏览器(客户端)(传入)。

对于这两个调用,当请求到达我的 Twilio 语音 URL 时,我将 twilio 发送的发布数据记录在日志文件中。

在这两种情况下,“direction”后置变量表示“inbound”。我希望一个人说“入站”,另一个人说“出站”或“出站拨号”(根据文档)。

然而他们都说“inbound”。所以我可能误解了 Twilio 是如何设置这个值的。有人可以解释我做错了什么吗?

我希望在我的应用程序中使用这个“方向”变量来确定调用是从客户端拨出到手机,还是从手机拨入到客户端。即,当请求到达我的 twilio 语音 url 时,我的代码可以确定它是对浏览器的传入调用,还是对电话或其他客户端的传出调用。

有关这两种情况的更多详细信息。

(1)我有一个存在于网页上的简单 Twilio 客户端。当我输入电话号码并单击连接时,它会调用 Twilio.Device.connect javascript 函数,该函数将连接传递到我在 Twilio 的 Twilio Voice Url。

在这种情况下,我希望“方向”数据显示“出站”或“出站拨号”,但它显示“入站”。

(2) 我从我的手机调用浏览器客户端,使用 twilio 注册的电话号码来查找客户端信息。

我希望“方向”数据显示“入站”,它的确如此。

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

对于找到这个的任何人,我找到了一个 github issue这说明这是设计使然。

when making a call from a Twilio client (e.g. the iOS mobile client in your case), you are actually making an "inbound" call request to your TwiML application. To separate the two use cases (Twilio number inbound vs. call initiated by mobile client) my suggestion is to have different endpoints in your application server

它还建议我们创建两个单独的端点来处理输入/输出场景。虽然我认为这是一个非常糟糕的设计,但除了变通办法之外我们无能为力......

好像这还不够,在以下每种情况下,出站调用的状态都是“已完成”:出站已应答 - 出站我们的用户取消了调用 - 出站调用接收者拒绝了调用

下面是一个呼出状态回调的示例响应(以上每个场景都相同):

ApiVersion: '2010-04-01',
Called: '',
CallStatus: 'completed',
Duration: '1',
From: 'client:Anonymous',
CallDuration: '4',
Direction: 'inbound',
Timestamp: 'Mon, 22 Mar 2021 18:03:11 +0000',
AccountSid: 'XXXXXXXX',
CallbackSource: 'call-progress-events',
ApplicationSid: 'XXXXXXXXX',
Caller: 'client:Anonymous',
SequenceNumber: '0',
To: '',
CallSid: 'XXXXXXXXXXXX'

然而,在拨号盘中有一个选项叫做action。您可以在其中指定通话结束时要执行的操作。

let dial = resp.dial({ 
callerId: from,
action: 'YOUR_API_URL' // replace with your endpoint URL. default call method is POST.
})

我们可以看到 DialCallStatus 可以完成/忙碌/失败等。

另请注意,Twilio 会抛出错误,因此不要忘记在那里处理对 Twilio 的响应,否则它会在调用结束时说“发生应用程序错误”。我只是在操作开始(调用结束)端点时挂断电话,看起来它成功了。

最后要注意的是,出站的操作端点在响应中不像入站调用那样有太多数据,因此您可以使用 DialCallSid 参数和 fetch the call resource 检索信息。

// Download the helper library from https://www.twilio.com/docs/node/install
// Your Account Sid and Auth Token from twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);

client.calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
.fetch()
.then(call => console.log(call.to));

关于javascript - 去电和来电的 Twilio 方向始终为 "inbound",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642195/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com