Twilio 可编程语音无法正常工作

Twilio Programmable Voice isn't working

当我尝试使用 [TwilioVoice Call] 方法从我的应用程序传递参数时,我无法在 twiML 应用程序上获取这些参数。但是当我尝试使用 FormData 从 POSTMAN 传递相同的数据时,它工作正常并且也能够成功地创建调用。

你能帮我如何使用从我的 iOS 应用程序传递到 twiML 的参数

PHP 中的 TwiML 应用程序:

<?php
/*
 * Makes a call to the specified client using the Twilio REST API.
 */
include('./vendor/autoload.php');
include('./config.php');
$to = isset($_GET["to"]) ? $_GET["to"] : "";
if (!isset($to) || empty($to)) {
    $to = isset($POST["to"]) ? $_POST["to"] : "";
}
$from = isset($_GET["from"]) ? $_GET["from"] : "";
if (!isset($from) || empty($from)) {
    $from = isset($POST["from"]) ? $_POST["from"] : "";
}

use Twilio\Twiml;
$response = new Twiml();
$dial = $response->dial(['callerId' => $from]);
$dial->client($to);
echo $response;

iOS Objective-C :

self.call = [TwilioVoice call:[self fetchAccessToken]
                           params:@{@"to": @"1",@"from":@"2"}
                             uuid:uuid
                         delegate:self];

当我尝试从 iOS

传递参数时的 Twilio 错误日志

Warning - 13224 Dial: Twilio does not support calling this number or the number is invalid

参考 TwiML 应用程序代码

https://github.com/twilio/voice-quickstart-server-php

这里是 Twilio 开发人员布道者。

12100 error comes from Twilio not being able to parse the TwiML returned from your server. In this case, it is because your PHP is not returning TwiML, it's trying to make a call using the REST API.

应该return一个<Dial> with a nested <Client>。您也可以使用帮助程序库来构建它。尝试将您的代码更改为:

<?php
    include('./vendor/autoload.php');
    include('./config.php');

    $to = isset($_REQUEST["To"]) ? $_REQUEST["To"] : "";
    $to = str_replace("client:", "", $to);

    $from = isset($_REQUEST["From"]) ? $_REQUEST["From"] : "";

    use Twilio\Twiml;

    $response = new Twiml();
    $dial = $response->dial(['callerId' => $from]);
    $dial->client($to);

    echo $response;

如果有帮助请告诉我。

第 1 步。在名称中你必须传递用户名(任何你想要的)

第 2 步。您需要使用 3 个参数生成令牌

第 3 步,您需要创建 VoiceGrant 对象

第四步,需要传递Id

第 5 步。您需要设置从 twilio 生成的 PUSH 通知 Id

$name = $this->input->post('name');
            //$PUSH_CREDENTIAL_SID = 'CRaf1a66dd4a7656876e16c7820ef5c01e';
             $outgoingApplicationSid = 'APf9b1b789ba690b8789d95a42511f2018';
              // choose a random username for the connecting user
             $identity = $name;
             // Create access token, which we will serialize and send to the client


             $token = new AccessToken(
             $this->twilioAccountSid,
             $this->twilioApiKey,
             $this->twilioApiSecret,
             3600,
             $identity
              );
          //     $chatGrant = new ChatGrant( $pushCredentialSid= "CRaf1a66dd4a7656876e16c7820ef5c01e");
          //
          // print_r($chatGrant);die;
             // Create Chat grant
             // $voiceGrant = new VoiceGrant($serviceSid = 'IS840a7e5f64634ab6bf179c3f8b0adfc4',$pushCredentialSid = 'CRaf1a66dd4a7656876e16c7820ef5c01e');
             $voiceGrant = new VoiceGrant();
             $voiceGrant->setOutgoingApplicationSid($outgoingApplicationSid);

             // Optional: add to allow incoming calls
             $voiceGrant->setIncomingAllow(true);

             $voiceGrant->setPushCredentialSid('CRaf1a66dd4a7656876e16c7820ef5c01e');


             // Add grant to token
             $token->addGrant($voiceGrant);

             // render token to string
            $voice_token = $token->toJWT();
             if($voice_token){
                $data['token'] = $voice_token;
                 $this->response = array('status'=>1,'data'=>$data);
             }else{
                 $this->response = array('status'=>0,'message'=>'Not found');
             }