ข้อผิดพลาดร้ายแรงขณะพยายามส่งข้อความโดยใช้ twilio Api phpSDK

เมื่อฉันใช้ twilio ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

ข้อผิดพลาดร้ายแรงที่ตรวจจับได้ของ PHP: อาร์กิวเมนต์ 2 ส่งผ่านไปยัง Twilio\Rest\Api\V2010\Account\MessageInstance::__construct() ต้องเป็นประเภทอาร์เรย์ ให้ค่า null เรียกใน /data/home/changliang /twilio/twilio-php-master/Twilio/Rest/Api/V2010/Account/MessageList.php ออนไลน์ 69 และกำหนดไว้ใน /data/home/changliang/twilio/twilio-php-master/Twilio/Rest/Api/V2010 /Account/MessageInstance.php ที่บรรทัด 52

นี่คือรหัสของฉัน

require_once("/twilio/twilio-php-master/Twilio/autoload.php");
use Twilio\Rest\Client;
$to = '+12022022022'
$content = 'hello';
$sid = 'XXXXXXX'; 
$token = 'XXXXXXXX'; 
$client = new Client($sid, $token);
$sms = $client->account->messages->create(  
    $to,
    array(
        'from' => '+12346788xx',
        'body' => $content,
    )  
);

person Clarence    schedule 06.12.2016    source แหล่งที่มา


คำตอบ (2)


มีข้อผิดพลาดเดียวกัน คำขอของคุณอาจดำเนินการผ่านพร็อกซีเซิร์ฟเวอร์ขององค์กรหรือไม่ นั่นคือปัญหาที่นี่ พร็อกซีเซิร์ฟเวอร์ที่นี่เพิ่มส่วนหัว HTTP เพิ่มเติมให้กับส่วนหัวการตอบกลับ และด้วยเหตุนี้ CurlClient จึงไม่สามารถแยกวิเคราะห์เนื้อหาการตอบสนองได้อย่างถูกต้อง:

สร้างการเชื่อมต่อ HTTP/1.1 200 แล้ว

ฉันได้รับการแก้ไขโดยเพิ่มส่วนหัวเพิ่มเติมเพื่อข้ามในคลาส CurlClient ประมาณบรรทัดที่ 37:

ต้นฉบับ:

list($head, $body) = ($parts[0] == 'HTTP/1.1 100 Continue')
                           ? array($parts[1], $parts[2])
                           : array($parts[0], $parts[1]);

ใหม่:

list($head, $body) = ($parts[0] == 'HTTP/1.1 100 Continue'
                   || $parts[0] == 'HTTP/1.1 200 Connection established')
                           ? array($parts[1], $parts[2])
                           : array($parts[0], $parts[1]);
person Bastian    schedule 19.04.2017
comment
ทำงานได้โดยไม่มีปัญหาใดๆ ไคลเอนต์ Curl ถูกวางไว้ในไดเรกทอรี: twilio_outbound_phone_call/twilio-php-master/Twilio/Http - person Gianluca D'Ardia; 24.11.2017

การแก้ไขของ Bastian ได้ผลสำหรับฉัน แต่ดูเหมือนว่า sdk อาจเปลี่ยนแปลงไปเล็กน้อยนับตั้งแต่เขาตอบกลับ สำหรับฉันมันดูเหมือนเดิม:

list($head, $body) = (
    \preg_match('/\AHTTP\/1.\d 100 Continue\Z/', $parts[0])
    || \preg_match('/\AHTTP\/1.\d 200 Connection established\Z/', $parts[0])
    || \preg_match('/\AHTTP\/1.\d 200 Tunnel established\Z/', $parts[0])
)           ? array($parts[1], $parts[2])
            : array($parts[0], $parts[1]);

และส่วนหัวที่พร็อกซีของฉันส่งคืนคือ:

HTTP/1.1 200 OK
Connection: Keep-Alive

การแก้ไขสำหรับฉันคือการเพิ่ม regex เพื่อรองรับการตอบกลับส่วนหัวโดยทั่วไป 200 รายการ:

list($head, $body) = (
    \preg_match('/\AHTTP\/1.\d 100 Continue\Z/', $parts[0])
    || \preg_match('/\AHTTP\/1.\d 200 Connection established\Z/', $parts[0])
    || \preg_match('/\AHTTP\/1.\d 200 Tunnel established\Z/', $parts[0])
    || \preg_match('/\AHTTP\/1.\d 200 .*/', $parts[0])
)           ? array($parts[1], $parts[2])
            : array($parts[0], $parts[1]);
person DSanchez    schedule 28.12.2020