Twilio API getting the recording of a call

此生再无相见时 提交于 2019-12-24 17:32:30

问题


I am testing Twilio's API in PHP. Currently I have a working module which allows me to place calls and record them. Now I am writing a module to report on those calls.

The code below is supposed to fetch a filtered list of calls and present my browser with a little info about that call, as well as link to the audio recording. This script fetches call logs. For each call it then calls a function to fetch the recording belonging to the current call. Problem is, it fetches the same audio recording every time.

    $version = '2010-04-01';

    // Set our AccountSid and AuthToken
    $sid = 'abc123';
    $token = 'fbc123';

    // Your Account Sid and Auth Token from twilio.com/user/account
    $client = new Services_Twilio($sid, $token,$version);
    $dt = date("Y-m-d");
    // Loop over the list of calls and echo a property for each one
    foreach ($client->account->calls->getIterator(0, 50, array(
            "Status" => "completed",
            "StartTime>" => "2015-08-04",
            "StartTime<" => "$dt"


        )) as $call
    ) {
        echo $call->sid.", ".$call->duration.", $".abs($call->price)." &nbsp; ".getRecording($call->sid)."<br/>";


    }

    function getRecording($callsid){

        // Twilio REST API version
        $version = '2010-04-01';

        // Set our AccountSid and AuthToken
        $sid = 'abc123';
        $token = 'fbc123';
        $client = new Services_Twilio($sid, $token);

        // Loop over the list of recordings and echo a property for each one
        foreach ($client->account->recordings->getIterator(0, 50, array(
                "callSid" => '$callsid'
            )) as $recording
        ) {
            return "&nbsp; &nbsp; ->".$callsid." <strong><a href='http://api.twilio.com".$recording->uri."'>Audio</a></strong>";
        }
    }

The output is this (please notice that every audio file has the same URL):

CAab40cacf1690a86e604ba0f527153887, 1, $0.015 &nbsp; &nbsp; &nbsp; ->CAab40cacf1690a86e604ba0f527153887 <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CAaf5629839a6d2095067a04359dc13809, 14, $0.015 &nbsp; &nbsp; &nbsp; ->CAaf5629839a6d2095067a04359dc13809 <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CAa8610e49f6e49a71c8bf3e02d3e974f1, 11, $0.015 &nbsp; &nbsp; &nbsp; ->CAa8610e49f6e49a71c8bf3e02d3e974f1 <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CA478704a99883f919a9932b52c6971cf7, 21, $0.015 &nbsp; &nbsp; &nbsp; ->CA478704a99883f919a9932b52c6971cf7 <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CA00b2f9db896e3b8cfc82c93df5c8e11e, 9, $0.015 &nbsp; &nbsp; &nbsp; ->CA00b2f9db896e3b8cfc82c93df5c8e11e <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CAcbd21d8dd3de1c06ce1f393c987bc6c7, 19, $0.015 &nbsp; &nbsp; &nbsp; ->CAcbd21d8dd3de1c06ce1f393c987bc6c7 <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CAffb1d60f5f48b870af65329d7d4ca48f, 4, $0.015 &nbsp; &nbsp; &nbsp; ->CAffb1d60f5f48b870af65329d7d4ca48f <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>
CA44fd1b5b9ef347f730d068abafffbd73, 15, $0.015 &nbsp; &nbsp; &nbsp; ->CA44fd1b5b9ef347f730d068abafffbd73 <strong><a href='http://api.twilio.com/2010-04-01/Accounts/acctnumber/Recordings/REe9a199dec7376ef94d6af256749e7d81'>Audio</a></strong>

回答1:


Twilio developer evangelist here.

The parameters for queries are case sensitive so you need to capitalize the c in callSid. Also wrapping a string in single quotes doesn't substitute it.

foreach ($client->account->recordings->getIterator(0, 50, array(
                "callSid" => '$callsid'

to

foreach ($client->account->recordings->getIterator(0, 50, array(
                "CallSid" => $callsid

Please let me know if I can help further!

edit: To clarify what was happening, a request was being made to get all the recordings in the account since the query param was off and each time it was taking the first one of the collection and returning that. Thus causing them to all be the same.



来源:https://stackoverflow.com/questions/32055523/twilio-api-getting-the-recording-of-a-call

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!