Как отправить пользовательское сообщение раньше, сеанс прокси отправляет реальное сообщение - PullRequest
0 голосов
/ 10 июля 2019

Когда Клиент отвечает на зарезервированный номер прокси-службы, прокси-сервер ударил OutOfSessionCallbackUrl (если сеанс не активен). Этот URL будет в моем коде ниже.

 public function response()
 {
    $to = $_POST['To'];
    $from = $_POST['From'];
    $from = substr($from, 2);
    $body = $_POST['Body'];
    $twilio = new Client($this->sid, $this->token);

    $response=$this->db->get_where('contact_management as cm 
    ,proxy_service as ps',
   array('mobile'=>$from,'company_mobile'=>$to,'sc.sms_template_id<>'=>0))
    ->row_array();
    $number = trim($response['country_code'].$response['mobile_number']);

    //Here I'm sending a response
        header("content-type:application/json");
        ?>
        {
        "uniqueName": "<?php echo rand();?>",
        "ttl":"64800",
        "mode": "voice-and-message",
        "participantIdentifier":"<?php echo $number;?>"
        }
        <?php
}

Это создаст сеанс между отправителем SMS и возвращаемым номером (компанией) и отправит сообщение отправителя в компанию. Я хочу отправить пользовательское сообщение, прежде чем прокси Twilio отправит фактическое сообщение в компанию.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Вот полное описание.Я добавил номер Twilio как зарезервированный в прокси-сервисе и установил прокси-сервис OutOfSessionCallbackUrl. Когда этот URL достигает моего кода, происходит волшебство,

   public function response()
   {
    $to = $_POST['To'];
    $from = $_POST['From'];
    $twilio = new Client($this->sid, $this->token);
    $response=$this->db->get_where('contact_management ,proxy_service,
     array('mobile'=>$from,'company_mobile'=>$to))->row_array();

        $service_sid=$response['service_sid'];

        $session = $twilio->proxy->v1->services($service_sid)->sessions
            ->create(array("uniqueName" => rand(),"ttl"=>"64800"));
        $session_sid = $session->sid;

        $participant1 = $twilio->proxy->v1->services($service_sid)
        ->sessions($session_sid)->participants->create($_POST['From'], // identifier
             array("friendlyName" => $response['f_name'],"proxyIdentifier"=>$to));
            $from_id = $participant1->proxyIdentifier;

        $participant2 = $twilio->proxy->v1->services($service_sid)
        ->sessions($session_sid)->participants
        ->create($response['country_code'].$response['mobile_number'], // identifier
           array("friendlyName" => $response['first_name']));
        $to_id = $participant2->proxyIdentifier;
        $to_sid = $participant2->sid;


        $body   =   $response['campaign_name']."\n";
        $body   .=  $_POST['Body'];
        $message_interaction = $twilio->proxy->v1->services($service_sid)
                                     ->sessions($session_sid)
                                     ->participants($to_sid)
                                     ->messageInteractions
                                     ->create(array("body" => $body));


        header("content-type:text/xml");
        ?>
        <Response />
        <?php
     }
0 голосов
/ 10 июля 2019

Разработчик Twilio здесь.

В настоящее время вы используете обратный вызов вне сеанса для создания сеанса, но вы хотите отправить сообщение, прежде чем перенаправить входящее сообщение.

Для этого вы не сможете ответить с помощью JSON, чтобы создать сеанс. Вместо этого вы должны создать сеанс вручную, используя API сеанса . После создания сеанса вы можете отправить свое первоначальное сообщение с помощью , создав взаимодействие с участником , которому вы хотите отправить сообщение. Затем вы можете продолжить, используя тот же API для пересылки исходного сообщения. И, наконец, вам все еще нужно ответить на веб-крючок. Поскольку вы обработали все сообщения, отправленные вручную, вы можете вернуть пустой TwiML <Response/>, чтобы указать, что вам нужен Twilio, чтобы больше не участвовать.

Дайте мне знать, поможет ли это вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...