当客户回复代理服务保留号码时,代理会命中OutOfSessionCallbackUrl(如果会话未激活)。 该网址将出现在下面的我的代码中。
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代理向公司发送实际消息之前发送自定义消息。
谢谢。
答案 0 :(得分:0)
这里是Twilio开发人员的传播者。
当前您正在使用the out of session callback来创建会话,但是要在转发传入消息之前先发送一条消息。
为此,您将无法使用JSON进行响应来创建会话。相反,您应该create the session manually using the session API。创建会话后,您可以通过creating an interaction on the participant发送您要向其发送消息的初始消息。然后,您可以使用相同的API继续转发原始消息。最后,您仍然需要响应网络挂钩。由于您已手动处理所有消息发送,因此您可以返回一个空的TwiML <Response/>
,以表示您不需要Twilio参与进一步的工作。
让我知道是否有帮助。
答案 1 :(得分:0)
这里是完整的描述。 我在代理服务中添加了保留的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
}