我面临一个与来电相关的问题, 所以情况是 API 位于 .NET 6 中,它的前端位于 Angular 应用程序中,而且它是多租户应用程序。
所以问题是我在 Angular 应用程序中创建了 Twilio 设备,并在 Twilio 上创建了传入 webhook,并且 webhook 端点位于 .NET API 中,当来电到来时 webhook 被触发,但如何将传入呼叫连接到 Twilio 设备在角度。
在生成调用令牌时,我还添加了传入范围身份。
注意:拨出电话工作正常。
预期答案:我错过了什么?或者你有任何参考博客之类的吗,如果有的话请帮助技术社区。
提前致谢。
在.NET 6中生成令牌如下
var scopes = new HashSet<IScope> {
{ new IncomingClientScope(unique_user_name) },
{ new OutgoingClientScope(my_twiml_app_sid) }
};
var capability = new ClientCapability(twilio_sid, twilio_token, expiration_time, scopes: scopes);
string voicetoken = capability.ToJwt();
然后在 Angular 中设置设备,如下所示并具有设备就绪功能
device.setup(voice_token);
device.on('ready', () => {
console.log('device is ready.');
});
device.on('error', (err) => {
console.log('device is not ready. Error - ', err);
});
device.on('incoming', (call) => {
console.log('incoming call', call);
});
还创建了带有呼叫者 ID 和“收件人”号码的传入 Webhook,如下所示,
public TwiMLResult IncomingVoice()
{
var response = new VoiceResponse();
var dial = new Dial(callerId: my_callerId);
// wrap the phone number or client name in the appropriate TwiML verb
// by checking if the number given has only digits and format symbols
if(Regex.IsMatch(to, "^[\\d\\+\\-\\(\\) ]+$"))
{
dial.Number(to);
}
else
{
dial.Client(to);
}
response.Append(dial);
return TwiML(response);
}
上述示例一切正常,但来电时 Twilio 设备未触发。
当您拨打
<Dial>
时,如果客户端使用语音 SDK 连接到 Twilio,Twilio 将为您拨打客户端电话。您传递给 <Client>
的 unique_user_name
是您的客户端的 ID,它必须与 IncomingClientScope
TwiML 名词的内容相匹配,因此它应该与 <Client>
变量相匹配。当您的客户端使用 Angular 应用程序连接时,应触发 to
事件,并且您需要接受来电。
根据您共享的代码,我看不出有什么问题。分享如何获取'incoming'
变量可能会有所帮助。
我建议登录 Twilio 控制台,单击“监控”>“日志”>“呼叫”,然后检查您的呼叫及其 TwiML。也许其中包含一些有用的信息。