【问题标题】:Twilio - How will twilio know which client to callTwilio - twilio 如何知道要调用哪个客户端
【发布时间】:2021-02-15 13:33:29
【问题描述】:

我将TwilioSymfony 5ApiPlatformreactjs 一起使用

我更多的是寻找信息而不是对问题的回应。

所以我想在我的两个客户端之间实现浏览器到浏览器的调用。

Frontend 这边,我有这个功能来启动与Twilio 的连接,这似乎工作正常

function createTwilioDevice()
{
    let device = Device.setup('some valid capability token');
      
    device.ready(function(device) {
      console.warn('DEVICE READY');
      const params = {To: 'Joey'}
      console.log('Calling ' + params.To + '...')
      device.connect(params)
    })

    device.error(function(err) {
      console.log('DEVICE ERROR : ' + err.message);
    })
}

backend 中,我生成了我的capability token,如文档中所示:

public function generateCapabilityToken(string $clientName): string
{
    $capability = new ClientToken($this->twilioAccountSid, $this->twilioAuthToken);

    $capability->allowClientOutgoing(self::TWIML_APP_SID);
    $capability->allowClientIncoming($clientName);
    return $capability->generateToken();
}

我像这样生成我的Twiml

/**
 *
 * @Route("/twilio/handle/twiml", name="twilio_handl_twiml")
 * @return Response
 */
public function generateTwiml(): Response
{
    $voiceResponse = new VoiceResponse();
    $number = htmlspecialchars($to);
    $dial = $voiceResponse->dial(null, array('callerId' => '+15017122661'));

    if (isset($to)) {
      $dial->client($number);
    } else {
      $voiceResponse->say('There has been an issue. Thanks for calling!');
    }

    return new Response(
            $voiceResponse->asXML(),
            Response::HTTP_OK,
            ['Content-type' => 'application/xml']
        );
}

经过一些测试,capability tokenTwiml 生成工作正常。

所以当我在前面运行Device.connect() 时,这个虚拟设备将连接到Twilio,然后它将调用我在我的Twiml 应用程序中设置的url,即https://127.0.0.1:5467/twilio/handle/twiml,来自generateTwiml()以上。

我无法理解的部分是关于客户端的,我如何告诉 twilio 调用这个客户端或这个客户端,因为我希望它通过浏览器而不是电话号码?

意思是我应该传递给客户端调用的函数,但假设我传递客户端的姓氏,Twilio 将不知道那是什么客户端或该字符串的含义

如果有人对此主题有任何提示/文档/回复,我将不胜感激,这对我来说仍然有点模糊

谢谢!

【问题讨论】:

    标签: symfony twilio client twilio-twiml


    【解决方案1】:

    参数作为 POST 值发送到与客户端访问令牌关联的 TwiML 应用程序中定义的 VoiceURL。

    【讨论】:

    • 是的,但如果我将客户的姓氏传递给它,例如,twilio 怎么知道它应该调用这个客户?
    • 如果您传递一个字母数字名称,它不能是电话号码,因此您将 is 视为另一个客户端并构造适当的 TwiML(带客户端名词的拨号动词)。您只需查看客户端拨打的内容即可。
    • 你知道一些文档吗?我想我明白你的意思,但不知道如何实现它。谢谢
    • 这里有用于可编程语音的通用 TwiML 文档,用于可编程语音的 TwiML™ - twilio.com/docs/voice/twiml。这也可能有所帮助 - twilio.com/docs/voice/…。您还可以查看 CodeExchange 上的其他示例 - twilio.com/code-exchange
    【解决方案2】:

    AuthToken 专门提供给 AccoundSid 和设备的身份。

    当您为传入/传出呼叫生成 Twiml 并将其返回给 Twilio 时,他们将知道要调用哪个客户端,基于分配给该设备的生成 AuthToken。

    注意

    如果你只想拨打设备,则必须在将 Twiml 返回到 twilio 时设置设备的身份。您还必须在铸造身份验证令牌时设置身份。

    我建议您将身份设置为数据库中的用户 ID。 我还建议您处理令牌过期。

    最后,客户端到客户端不是免费的。但是,关闭视频的 P2P 视频 API 是。想想团队或不和谐。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多