代码之家  ›  专栏  ›  技术社区  ›  Farman Ali Khan

来自浏览器的Twilio传出呼叫

  •  4
  • Farman Ali Khan  · 技术社区  · 7 年前

    我在《暮光之城》中扮演贝吉纳。我读过quickstart从浏览器拨出电话。我的代码如下

     <?php
    require 'twilio-php-master/Twilio/autoload.php';
    use Twilio\Jwt\ClientToken;
    $accountSid = '***************************';
    $authToken  = '***************************';
    $appSid = '****************';
    
    $capability = new ClientToken($accountSid, $authToken);
    $capability->allowClientOutgoing($appSid);
    $capability->allowClientIncoming('jenny');
    $token = $capability->generateToken();
    ?>
    
    <!DOCTYPE html>
    <html>
      <head>
        <title>Hello Client Monkey 4</title>
        <script type="text/javascript"
          src="//media.twiliocdn.com/sdk/js/client/v1.3/twilio.min.js"></script>
        <script type="text/javascript"
          src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
        </script>
        <link href="//static0.twilio.com/resources/quickstart/client.css"
          type="text/css" rel="stylesheet" />
        <script type="text/javascript">
    
          Twilio.Device.setup("<?php echo $token; ?>");
    
          Twilio.Device.ready(function (device) {
            $("#log").text("Ready");
          });
    
          Twilio.Device.error(function (error) {
            $("#log").text("Error: " + error.message);
          });
    
          Twilio.Device.connect(function (conn) {
            $("#log").text("Successfully established call");
          });
    
          Twilio.Device.disconnect(function (conn) {
            $("#log").text("Call ended");
          });
    
          Twilio.Device.incoming(function (conn) {
            $("#log").text("Incoming connection from " + conn.parameters.From);
            // accept the incoming connection and start two-way audio
            conn.accept();
          });
    
          function call() {
            // get the phone number to connect the call to
            params = {"PhoneNumber": $("#number").val()};
            Twilio.Device.connect(params);
          }
    
          function hangup() {
            Twilio.Device.disconnectAll();
          }
        </script>
      </head>
      <body>
        <button class="call" onclick="call();">
          Call
        </button>
    
        <button class="hangup" onclick="hangup();">
          Hangup
        </button>
    
        <input type="text" id="number" name="number"
          placeholder="Enter a phone number to call"/>
    
        <div id="log">Loading pigeons...</div>
      </body>
    </html>
    

    TwiML代码在这里

    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
      <Dial callerId="+14159426198">
        <Number>+91**********</Number>
      </Dial>
    </Response>
    

    我能打外呼。我用上面的TwiML文件箱制作了TwiML应用程序,但在TwiML中,呼出号码是静态的。如何动态地拨打任何号码的呼出电话?

    请帮忙。

    2 回复  |  直到 7 年前
        1
  •  2
  •   philnash    7 年前

    您已经将UI设置为可以调用任何号码,唯一需要做的就是使您的TwiML应用程序动态化。您可以看到,当您开始与客户端通话时,您正在发送一些参数:

      function call() {
        // get the phone number to connect the call to
        params = {"PhoneNumber": $("#number").val()};
        Twilio.Device.connect(params);
      }
    

    当Twilio收到这个调用时,它会将参数发送到TwiML应用程序,然后根据TwiML进行调用。您需要更新TwiML,并根据 PhoneNumber

    <?php
      $phoneNumber = $_REQUEST['PhoneNumber'];
      header("Content-type: text/xml");
    ?>
    <Response>
      <Dial callerId="+14159426198">
        <Number><?php echo $phoneNumber ?></Number>
      </Dial>
    </Response>
    

    如果有任何帮助,请告诉我。

        2
  •  0
  •   miknik    7 年前

    在quickstart中,您可以在配置中设置呼出方ID。php文件。您只能使用从Twilio购买或验证的号码。