将变量传递给出站呼叫TwiML

时间:2015-06-29 14:01:10

标签: php session session-variables twilio twilio-php

我正在创建一个页面,其中包含存储为JSON的信息。例如:

"PatientContactHeader":{  
  "PatientID":14,
  "PhoneNumber":"+1558881414",
  "ContactType":"Phone Call",
  "DateTimeOfCall":"2015-06-25: 11:00:00AM",
  "TimeZone":"EST"
 } "PatientContactDetails":[  
  {  
     "MessageID":123,
     "RecordingURL":"http://examplerecording.com",
     "MessageTitle":"Greeting"
  }
 ]
}

初始页面将接受此JSON并使用它来创建出站呼叫。根据Twilio的API,出站向某个TwiML Url发出请求。

 function initiateCall($fromNumber, $toNumber, $url) {

try {
    // Initiate a new outbound call
    $call = $client->account->calls->create(
        $fromNumber, // The number of the phone initiating the call
        $toNumber, // The number of the phone receiving call
        $url, // The URL Twilio will request when the call is answered
        array('IfMachine' =>'Continue')
    );
    echo 'Started call: ' . $call->sid;
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

}

我想要的是能够访问TwiML指令中的一些JSON信息。更具体地说,如果被调用的人应该接收多个消息,我希望能够遍历JSON数据并访问每个消息以进行回放。我的问题是,我知道无法将调用请求的初始页面中的信息传递给包含TwiML的页面。解决这个问题的逻辑方法似乎是会话变量,但我已经阅读(并发现)那些在进行出站呼叫时不起作用。有没有解决这个问题的方法?

1 个答案:

答案 0 :(得分:2)

如果您已经存储了存储此信息的数据库,那么处理此信息的最快方法是传递一段数据,您可以使用这些数据在TwiML网址的查询字符串中查询数据库(可能是PatientID或MessageID)像这样:

  $call = $client->account->calls->create(
        $fromNumber, // The number of the phone initiating the call
        $toNumber, // The number of the phone receiving call
        $url . "?PatientID=" . $patientID, // The URL Twilio will request when the call is answered
        array('IfMachine' =>'Continue')
    );

然后在您为TwiML提供服务的文件中,您可以访问以下数据:

$patientID = $_GET['PatientID'];
// query your database with $patientID and get the info you need

希望有所帮助!