Twilio - twilio 如何知道要调用哪个客户端

时间:2021-02-15 13:33:29

标签: symfony twilio client twilio-twiml

我将 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,即 {{1 }} ,从上面的 https://127.0.0.1:5467/twilio/handle/twiml 开始。

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

意思是说我应该传递给客户端调用的函数,但假设我将客户端的lastName传递给它,generateTwiml()将不知道这是什么客户端或该字符串的含义

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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