【问题标题】:Connecting to Twilio SMS via a Proxy in PHP通过 PHP 中的代理连接到 Twilio SMS
【发布时间】:2015-10-20 13:38:03
【问题描述】:

我正在测试 Twilio 以用作我们的 SMS 解决方案,但是我在让它在我们的代理服务器后面工作时遇到了问题。

我试过了:

$twiliohttp = new Services_Twilio_TinyHttp(
        "https://api.twilio.com",
        array("curlopts" => array(
    CURLOPT_USERAGENT => self::USER_AGENT,
    CURLOPT_HTTPHEADER => array('Accept-Charset: utf-8'),
    CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem',
    CURLOPT_PROXY => '3.X.X.X:9400',
    ))
);
$client = new Services_Twilio($account_sid, $auth_token, null, $twiliohttp );


$message = $client->account->messages->sendMessage(
  '+441432XXXX31', // From a Twilio number in your account
  '+44776XXXX712', // Text any number
  "Hello monkey!"
);

然后我收到错误:致命错误:无法访问 self:: 当第 16 行的 /var/www/twiliosms.php 中没有活动的类范围时

所以我修改了Twilio.php文件修改curlopts数组添加:

CURLOPT_PROXY => '3.X.X.X:9400',

并通过以下方式调用 Twilio:

$client = new Services_Twilio($account_sid, $auth_token );
$message = $client->account->messages->sendMessage(
  '+4414XXXXXXX1', // From a Twilio number in your account
  '+4477XXXXXXX2', // Text any number
  "Hello monkey!"
);

然后我得到错误:

Fatal error: Uncaught exception 'Services_Twilio_RestException' with message 'Could not decode response body as JSON. This likely indicates a 500 server error' in /var/www/GE/includes/SMS/Twilio.php:288
Stack trace:
#0 /var/www/GE/includes/SMS/Twilio.php(181): Base_Services_Twilio->_processResponse(Array)
#1 /var/www/GE/includes/SMS/Twilio/ListResource.php(92): Base_Services_Twilio->createData('/2010-04-01/Acc...', Array)
#2 /var/www/GE/includes/SMS/Twilio/Rest/Messages.php(24): Services_Twilio_ListResource->_create(Array)
#3 /var/www/GE/includes/SMS/Twilio/Rest/Messages.php(71): Services_Twilio_Rest_Messages->create(Array)
#4 /var/www/GE/twiliosms.php(35): Services_Twilio_Rest_Messages->sendMessage('+441432233131', '+447766205712', 'Hello monkey!')
#5 {main}
  thrown in /var/www/GE/includes/SMS/Twilio.php on line 288

任何想法如何通过不允许入站连接的代理服务器使此解决方案工作?

提前致谢。

【问题讨论】:

    标签: twilio twilio-php


    【解决方案1】:

    来自 Twilio 的 Ricky 在这里。

    虽然我无法使用您的确切代理设置进行测试,但我认为如果您对用户代理进行硬编码,您尝试的第一个解决方案将会起作用。例如:

    $twiliohttp = new Services_Twilio_TinyHttp(
            "https://api.twilio.com",
            array("curlopts" => array(
        CURLOPT_USERAGENT => "Twilio Proxy/1.0",
        CURLOPT_HTTPHEADER => array('Accept-Charset: utf-8'),
        CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem',
        CURLOPT_PROXY => '3.X.X.X:9400',
        ))
    );
    

    您可能还需要对 here 显示的 TinyHttp 库进行修改。

    【讨论】:

    • 我现在得到:致命错误:未捕获的异常“Services_Twilio_RestException”,消息“无法将响应正文解码为 JSON。这可能表示 /var/www/GE/includes/SMS/Twilio.php:288 中的 500 服务器错误
    • 在第 288 行的 Twilio.php 中尝试转储您得到的响应。查看此响应可能会更深入地了解我们无法将请求解析为 json 的原因: private function _processResponse($response) { var_dump($response);
    • 它返回 404 错误,但是我可以毫无问题地卷曲到该代理,您是否有机会进行支持会话?如果这是一个问题字符串,我们的代理将只允许 https (581) "HTTP/1.1 404 NOT FOUND Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Accept, Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since Access-Control-Allow-Methods: GET, POST, DELETE, OPTIONS Access-Control-Allow-Origin: *
    • 看起来这可能更容易一起调试。想给我发一封电子邮件,我们会进行一些设置 - ricky@twilio.com?
    【解决方案2】:

    非常感谢 RickyRobinett,这是解决问题的方法,我将这个答案与完整的解决方案一起发布,这样人们就不必浏览格式错误的 cmets。

    更新 TinyHttp 符合:https://github.com/camuthig/twilio-php/commit/20d4f3c4479c93894866f498e89a0f13cf16d6bf

    $twiliohttp = new Services_Twilio_TinyHttp(
            "https://api.twilio.com",
            array("curlopts" => array(
        CURLOPT_USERAGENT => "Twilio Proxy/1.0",
        CURLOPT_HTTPHEADER => array('Accept-Charset: utf-8'),
        CURLOPT_CAINFO => 'includes/SMS/cacert.pem',
        CURLOPT_PROXY => 'X.X.X.X:9400',
        ))
    );
    
    $client = new Services_Twilio($account_sid, $auth_token, null, $twiliohttp );
    

    如果您没有 cacert.pem,请查看此帖子 https://stackoverflow.com/a/31297747/1697288

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2015-09-23
      • 2011-01-04
      • 2023-03-16
      相关资源
      最近更新 更多