Передача переменных в исходящий вызов TwiML

Я создаю страницу, которая принимает информацию, хранящуюся в формате 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 и будет использовать его для создания исходящего вызова. Исходящий, согласно API Twilio, делает запрос к определенному URL-адресу TwiML.

 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();
}

}

Я хочу иметь доступ к некоторой информации JSON в инструкциях TwiML. В частности, если вызываемый человек должен получить несколько сообщений, я хочу иметь возможность перебирать данные JSON и получать доступ к каждому сообщению для воспроизведения. Моя проблема в том, что я не знаю способа передать информацию с начальной страницы, которая делает запрос на вызов, на страницу, содержащую TwiML. Логичным способом решения этой проблемы могут показаться переменные сеанса, но я читал (и обнаружил), что они не работают при исходящих вызовах. Есть ли решение этой проблемы?


person rohanraj    schedule 29.06.2015    source источник
comment
Сохраняете ли вы полученный JSON где-нибудь в какой-либо базе данных?   -  person philnash    schedule 30.06.2015


Ответы (1)


Если у вас уже есть база данных с сохраненной этой информацией, то самым быстрым способом справиться с этим будет передача части данных, которую вы можете использовать для запроса к базе данных (возможно, PatientID или MessageID} в строке запроса URL-адреса TwiML, например:

  $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

Надеюсь, это поможет!

person rickyrobinett    schedule 21.10.2015