如何在 Angular 应用程序中为来电设置 twilio 设备(即 API 在 .NET 6 中)?

问题描述 投票:0回答:2

我面临一个与来电相关的问题, 所以情况是 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 设备未触发。

c# angular twilio .net-6.0 twilio-api
2个回答
0
投票

当您拨打

<Dial>
时,如果客户端使用语音 SDK 连接到 Twilio,Twilio 将为您拨打客户端电话。您传递给
<Client>
unique_user_name
是您的客户端的 ID,它必须与
IncomingClientScope
TwiML 名词的内容相匹配,因此它应该与
<Client>
变量相匹配。
当您的客户端使用 Angular 应用程序连接时,应触发 

to

事件,并且您需要接受来电。

根据您共享的代码,我看不出有什么问题。分享如何获取 

'incoming'

变量可能会有所帮助。

我建议登录 Twilio 控制台,单击“监控”>“日志”>“呼叫”,然后检查您的呼叫及其 TwiML。也许其中包含一些有用的信息。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.