首页 文章

不调用Twilio回调URL - PHP和Wordpress

提问于
浏览
0

我正在尝试将Twilio集成到我的Wordpress网站上 .

这个想法是允许用户输入他们的电话号码来获得我们的应用程序的下载链接 . 我们在这里提出了一个简单的表单 - http://evntr.co/download - 并在提交表单后运行 EvntrPHP.php 代码 .

使用模板代码,我们可以轻松地使用免费的Twilio号码将表单发送到已验证的号码(当前位于“收件人”字段中) . 但是,当我们添加StatusCallback参数时,它从不调用我们的 callback.php 代码 . EvntrPHP.phpcallback.php 都位于根目录 - evntr.co/中 .

<?php
 require 'twiliophp/Services/Twilio.php';

 $AccountSid = "--------";
 $AuthToken = "---------";

 $client = new Services_Twilio($AccountSid, $AuthToken);

 $phonenum = $_POST["phonenum"];
 $callbackURL = "https://evntr.co/callback.php";

 $client->account->messages->create(array( 
    'To' => "XXXXXXXXXX", 
    'From' => "+XXXXXXXXXX", 
    'Body' => "Test Message",  
    'StatusCallback' => "https://evntr.co/callback.php", 
 ));
?>

My understanding is that the flow should be like this:

  • 用户导航到evntr.co/download

  • 用户提交表单及其编号

  • 表单调用EvntrPHP.php并向其编号发送文本消息

  • 只要消息状态发生变化(已发送,已发送,已取消等),Twilio就会POST回callback.php .

但是,每次我提交表单时,都会发送消息,页面将保留在evntr.co/EvntrPHP.php,并且永远不会加载callback.php . 也许这是我对Callback URL如何工作的误解?或者,StatusCallback参数可能不适用于免费的Twilio号码?

2 回答

  • 0

    Twilio开发者传道者在这里 .

    你是正确的Twilio回调没有按预期工作 . 正如McCann所指出的那样,请求是从Twilio异步到您提供的URL . 您可以使用回调来跟踪消息的进度,但不会影响用户的请求 .

    因此,在您的示例中,您要么在发送消息后呈现内容:

    <?php
      require 'twiliophp/Services/Twilio.php';
    
      // other stuff
    
      $client->account->messages->create(array( 
        'To' => $phonenum, 
        'From' => "+14708655xxx", 
        'Body' => "Test Message",  
        'StatusCallback' => "https://evntr.co/callback.php", 
      ));
    ?>
    
    <h1>You should receive an SMS, click the link in the SMS to download the app on the platform of choice.</h1>
    

    当然还有一些比普通的样式更多的风格!1602520_!或者,您可以重定向到包含成功消息的页面 . (PHP不是我最强的主题,但discussions of redirects are rife on this StackOverflow question

    祝你好运,如果你有更多的Twilio问题,请告诉我!

    [edit]

    正如评论中所讨论的,如果您想查看API请求是否成功,您将需要执行以下操作:

    <?php
      require 'twiliophp/Services/Twilio.php';
    
      // other stuff
    
      try {
        $client->account->messages->create(array( 
          'To' => $phonenum, 
          'From' => "+14708655xxx", 
          'Body' => "Test Message",  
          'StatusCallback' => "https://evntr.co/callback.php", 
        ));
    
        // Success! Redirect to success page!
        header("Location: http://evntr.co/success.php");
        die();
    
      } catch (Services_Twilio_RestException $e) {
        // Something went wrong!
        // Do something about it!
      }
    
    ?>
    

    因此,将API调用包装在try / catch块中并进行适当的响应应能从错误的电话号码或其他API错误中捕获大多数错误 . 它不能保证短信已经发送(您将从回调webhook中获得),但它将保证您已尽力发送短信 .

  • 0

    回调不像您认为的那样有效 .

    调用End Callback(StatusCallback)请求

    收到呼叫,从您的应用程序请求TwiML,处理它,最后结束呼叫后,Twilio将对为被叫Twilio号码配置的StatusCallback URL发出异步HTTP请求(如果有的话) . 通过为Twilio号码提供StatusCallback URL并捕获此请求,您可以确定呼叫何时结束并接收有关呼叫的信息 .

相关问题