未调用Twilio回调URL-PHP&;Wordpress

未调用Twilio回调URL-PHP&;Wordpress,php,wordpress,twilio,Php,Wordpress,Twilio,我正在尝试将Twilio集成到我的Wordpress网站上 这个想法是允许用户输入他们的电话号码,以获得我们应用程序的下载链接。我们在这里建立了一个简单的表单——提交表单后,运行evntrpp.php代码 使用模板代码,我们可以很容易地获得表单,以便使用免费的Twilio号码将消息发送到已验证的号码(当前位于“收件人”字段中的号码)。但是,当我们添加StatusCallback参数时,它从不调用我们的callback.php代码。evntrpp.php和callback.php都在根目录-evn

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

这个想法是允许用户输入他们的电话号码,以获得我们应用程序的下载链接。我们在这里建立了一个简单的表单——提交表单后,运行evntrpp.php代码

使用模板代码,我们可以很容易地获得表单,以便使用免费的Twilio号码将消息发送到已验证的号码(当前位于“收件人”字段中的号码)。但是,当我们添加StatusCallback参数时,它从不调用我们的callback.php代码。evntrpp.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", 
 ));
?>

我的理解是,流程应该是这样的:

  • 用户导航至evntr.co/download
  • 用户提交带有其编号的表单
  • 表单调用EvntrPHP.php并向其号码发送文本消息
  • 每当消息状态发生变化(已发送、已传递、已取消等),Twilio都会发布到callback.php
    但是,每次我提交表单时,都会发送消息,页面只停留在evntr.co/evntrpp.php,而不会加载callback.php。也许这是我对回调URL工作方式的误解?或者可能StatusCallback参数不能与免费的Twilio号码一起使用?

    回调的工作方式与您认为的不同

    调用结束回调(StatusCallback)请求

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


    --这里是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>
    
    
    你应该收到一条短信,点击短信中的链接,在选择的平台上下载应用程序。
    
    当然,比普通的
    更具风格!或者,您可以重定向到显示成功消息的页面。(PHP不是我最擅长的科目,但是)

    祝你好运,如果你还有任何关于Twilio的问题,请告诉我

    [编辑]

    如评论中所述,如果您想查看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获得),但它可以保证您已经尽了一切努力发送短信。

    Ah,所以在发送消息后,我重定向到我的页面-evntr.co/callback.php-然后根据状态消息做出反应。您是否有关于如何捕获发送到该回调url的状态消息的示例代码?我尝试了一个简单的变量-$_POST['SmsStatus']),但没有显示任何内容。啊,不,你的重定向完全独立于Twilio的任何状态回调。它们是异步发生的,与RESTAPI调用的范围无关。这可能是立即的,也可能需要几分钟,所以我不会基于它们进行任何用户交互。我不确定您试图通过回调实现什么样的用户交互,所以我不确定如何从这一点指导您。明白了。我试图将用户引导到成功页面或失败页面(例如,twilio由于无效数字而无法发送文本)。我可能处理得不对。我在回答中添加了一些可能会有所帮助的内容。你觉得怎么样?这很有效。那么回调url的用例是什么?我似乎一直在处理这个错误。