0

SMS ソリューションとして使用する Twilio をテストしていますが、プロキシ サーバーの背後で動作させるのに問題があります。

私はもう試した:

$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!"
);

その後、次のエラーが表示されます: Fatal error: Cannot access self:: when no class scope is active in /var/www/twiliosms.php 行 16

そこで、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

インバウンド接続を許可しないプロキシ サーバーを介してこのソリューションを機能させる方法はありますか?

前もって感謝します。

4

2 に答える 2

2

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',
    ))
);

また、ここに示す TinyHttp ライブラリを変更する必要がある場合もあります。

于 2015-10-20T14:42:43.297 に答える
1

RickyRobinett に感謝します。これは問題を解決する方法です。この回答を完全な解決策とともに投稿して、不適切な形式のコメントを調べる必要がないようにします。

TinyHttp を次のように更新します。

$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

于 2015-10-20T20:09:52.403 に答える