首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel商店用户回复输入数据库以响应发送SMS订单ID

问Laravel商店用户回复输入数据库以响应发送SMS订单ID
EN

Stack Overflow用户
提问于 2022-03-30 09:28:40
回答 1查看 199关注 0票数 0

我需要帮助在Twilio获得回复响应,并将它们存储在数据库中,以响应用户输入后发送短信以响应消息。我正在向用户发送一条关于他/她的订单时间表的短信,并要求他/她通过输入Ok确认交付,当他/她确认时,我将成功地得到他/她的回复。

我面临的问题或问题是,我想知道,当他/她确认交付时,我想更新数据库记录,以响应我们早些时候发送给他/她的发送短信。如果我能够从第一条消息中获得order_id并以replytoSMS函数发送它,我的问题就会得到解决。

我的代码发送短信和网络钩子(replytoSMS)给出如下。

代码语言:javascript
复制
<?php

 public function initiateSMS(Request $request) {
  try {
  foreach ( $request->get('items') as $item ) {
    $order_id = $item['order_id'];
    $phone    = $item['phone_number'];
    $order     = Orders::where('id', $order_id)->first();

    $phone_number = $this->client->lookups->v1->phoneNumbers($phone)->fetch();

  if($phone_number) {
   
      $template_value = $order->message; 

      $sms = $this->client->messages->create($phone, [
        'from' => $this->from, 
        'body' => $template_value,
        "method" => 'POST',
        "statusCallbackMethod" => 'POST',
        "statusCallback" => 'https://example.com/simply/public/api/notification/statusMessageBack?order_id='.$order_id.'',
        ]);

       // print($sms->sid);
  }
} // foreach loop end
  if($sms){
    return Response::json(['success' => 'sms initiated successfully!']);
  }
} catch (Exception $e) {
  return Response::json(['Error' => $e->getMessage()]);
} catch (RestException $rest) {
  return Response::json(['Error' => $rest->getMessage()]);
}
}

function statusMessageBack(){
 header('Content-type: text/xml');
 header('Cache-Control: no-cache');
 $response = new MessagingResponse();
 $order_id = $_REQUEST['order_id'];
 $user_phone = $_REQUEST['To'];
 $MessageSid = (!empty($_REQUEST['MessageSid'])) ? $_REQUEST['MessageSid'] : '';
 $MessageStatus = (!empty($_REQUEST['MessageStatus'])) ? $_REQUEST['MessageStatus'] :              '';
  if($MessageStatus && $MessageStatus == "delivered"){

  $notification = Notification::create([                            
  "response_code" => $MessageSid,
  "type" => $category,
  "table_ref"  => "orders",
  "table_ref_pk"  => $order_id, 
  "response_status" => "",
  "medium" => $user_phone,
  "status" => $MessageStatus,
  "sender_id" => $sender_id
 ]);
  
}
 print $response; exit;
}

 public function replyToSMS(){
 header('Content-type: text/xml');
 header('Cache-Control: no-cache');
 $response = new MessagingResponse();
 $MessageSid = (!empty($_REQUEST['MessageSid'])) ? $_REQUEST['MessageSid'] : '';
 $MessageStatus = (!empty($_REQUEST['MessageStatus'])) ? $_REQUEST['MessageStatus'] : '';

$body = $_REQUEST['Body'];
$order_id = $_REQUEST['order_id'];
$from_phone = $_REQUEST['From'];

if (strtolower($body) == 'ok' || strtolower($body) == 'yes' || strtolower($body) == 'confirm') {
  $response->message('Your delivery has been confirmed. Thank you', [
    'callbackUrl' => "https://example.com/api/notification/reply_status?order_id='.$order_id.'",
    'callbackMethod' => "POST"
    ]);
    $notification = Notification::where('order_id', $order_id)->update(array("response_status" => "confirmed"));
 } else {
   $response->message('Sorry');
   $notification = Notification::where('order_id', $order_id)->update(array("response_status" => "call store"));
 }
  print $response;

 }

function reply_status(){
header('Content-type: text/xml');
header('Cache-Control: no-cache');
$response = new MessagingResponse();
echo $order_id = $_REQUEST['order_id'];
$user_phone = $_REQUEST['To'];
$MessageSid = (!empty($_REQUEST['MessageSid'])) ? $_REQUEST['MessageSid'] : '';
$MessageStatus = (!empty($_REQUEST['MessageStatus'])) ? $_REQUEST['MessageStatus'] : '';
if($MessageStatus && $MessageStatus == "delivered"){

}
  print $response; exit;
}
EN

回答 1

Stack Overflow用户

发布于 2022-03-30 23:09:41

SMS协议没有任何附加的带有SMS消息的元数据概念,也没有回复特定消息的概念(您可以通过打开手机的SMS应用程序并尝试响应来自不是您最后收到的消息的任何消息来测试这一点)。

你只能说出某人对时间顺序的反应。也就是说,如果您已经向他们发送了一条消息,那么他们的响应将与您发送的最后一条消息相关。

如果您打算同时发送多个请求响应的消息,这将是一个问题。在这种情况下,我们建议您使用两个不同的From编号发送消息,并根据系统中的顺序存储From编号。通过这种方式,您可以通过匹配用户的电话号码和用来发送消息的电话号码来判断响应的是哪条消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71674742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档