ไลบรารีนี้ต้องการเวอร์ชัน PHP ขั้นต่ำ 8.1
นี่คือไลบรารีไคลเอนต์ PHP สำหรับใช้งาน API ของ Vonage หากต้องการใช้สิ่งนี้ คุณจะต้องมีบัญชี Vonage ลงทะเบียนฟรีที่นี่
หากต้องการใช้ไลบรารีไคลเอ็นต์ คุณจะต้องสร้างบัญชี Vonage
หากต้องการติดตั้งไลบรารีไคลเอนต์ PHP ให้กับโปรเจ็กต์ของคุณ เราขอแนะนำให้ใช้ Composer
composer require vonage/client
โปรดทราบว่านี่ชี้ไปที่ไลบรารี wrapper ที่มีไคลเอ็นต์ HTTP และไลบรารีหลักนี้ คุณสามารถติดตั้งไลบรารีนี้โดยตรงจาก Composer ได้หากต้องการ โดยสามารถเลือกไคลเอนต์ HTTP ที่โปรเจ็กต์ของคุณใช้
คุณไม่จำเป็นต้องโคลนพื้นที่เก็บข้อมูลนี้เพื่อใช้ไลบรารีนี้ในโปรเจ็กต์ของคุณเอง ใช้ Composer เพื่อติดตั้งจาก Packagist
หากคุณเพิ่งเริ่มใช้ Composer ต่อไปนี้เป็นแหล่งข้อมูลบางส่วนที่คุณอาจพบว่ามีประโยชน์:
หากคุณใช้ Composer ตรวจสอบให้แน่ใจว่าตัวโหลดอัตโนมัติรวมอยู่ในไฟล์บูตสแตรปของโปรเจ็กต์ของคุณ:
require_once " vendor/autoload.php " ;
สร้างไคลเอ็นต์ด้วยคีย์ API และความลับของคุณ:
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
เพื่อวัตถุประสงค์ในการทดสอบ คุณอาจต้องการเปลี่ยน URL ที่ vonage/client
ส่งคำขอจาก api.vonage.com
ไปเป็นอย่างอื่น คุณสามารถทำได้โดยจัดเตรียมอาร์เรย์ที่มี base_api_url
เป็นพารามิเตอร์ตัวที่สองเมื่อสร้างอินสแตนซ์ VonageClient
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
[
' base_api_url ' => ' https://example.com '
]
);
สำหรับ API ที่ปกติจะเข้าชม rest.nexmo.com
การจัดหา base_rest_url
เป็นตัวเลือกให้กับ Constructor จะเปลี่ยนคำขอเหล่านั้น
หากต้องการใช้ SMS API ของ Vonage เพื่อส่งข้อความ SMS ให้เรียกใช้เมธอด $client->sms()->send()
วัตถุข้อความ ถูกใช้เพื่อสร้างข้อความ SMS ข้อความแต่ละประเภทสามารถสร้างได้ด้วยพารามิเตอร์ที่จำเป็น และอินเทอร์เฟซที่คล่องแคล่วช่วยให้สามารถเข้าถึงพารามิเตอร์เสริมได้
$ text = new Vonage SMS Message SMS ( VONAGE_TO , VONAGE_FROM , ' Test message using PHP client library ' );
$ text -> setClientRef ( ' test-message ' );
วัตถุข้อความถูกส่งผ่านไปยังวิธี send
:
$ response = $ client -> sms ()-> send ( $ text );
เมื่อส่งแล้ว ออบเจ็กต์ข้อความจะสามารถใช้เพื่อเข้าถึงข้อมูลการตอบกลับได้
$ data = $ response -> current ();
echo " Sent message to " . $ data -> getTo () . " . Balance is now " . $ data -> getRemainingBalance () . PHP_EOL ;
เนื่องจากแต่ละข้อความ SMS สามารถแบ่งออกเป็นหลายข้อความได้ การตอบกลับจึงมีออบเจ็กต์สำหรับแต่ละข้อความที่สร้างขึ้น คุณสามารถตรวจสอบจำนวนข้อความที่สร้างขึ้นได้โดยใช้ฟังก์ชัน count()
มาตรฐานใน PHP หากคุณต้องการได้รับข้อความแรก คุณสามารถใช้เมธอด current()
ในการตอบกลับได้
$ data = $ response -> current ();
$ data -> getRemainingBalance ();
foreach ( $ response as $ index => $ data ){
$ data -> getRemainingBalance ();
}
ตัวอย่างการส่งยังมีตัวอย่างการทำงานแบบเต็มอีกด้วย
คุณสามารถใช้เมธอด isGsm7()
แบบคงที่ภายในโค้ดไคลเอ็นต์ SMS เพื่อพิจารณาว่าจะส่งข้อความโดยใช้การเข้ารหัส GSM-7 หรือ Unicode หรือไม่ นี่คือตัวอย่าง:
$ sms = new Vonage SMS Message SMS ( ' 123 ' , ' 456 ' , ' is this gsm7? ' );
if ( Vonage SMS Message SMS :: isGsm7 ( $ text )) {
$ sms -> setType ( ' text ' );
} else {
$ sms -> setType ( ' unicode ' );
}
ข้อความขาเข้าจะถูกส่งไปยังแอปพลิเคชันของคุณในรูปแบบเว็บฮุค ไลบรารีไคลเอ็นต์มีวิธีสร้างออบเจ็กต์ข้อความขาเข้าจาก webhook:
try {
$ inbound = Vonage SMS Webhook Factory:: createFromGlobals ();
error_log ( $ inbound -> getText ());
} catch ( InvalidArgumentException $ e ) {
error_log ( ' invalid message ' );
}
คุณอาจต้องการอ่านเอกสารเกี่ยวกับการลงนามข้อความ
SMS API รองรับความสามารถในการลงนามข้อความโดยการสร้างและเพิ่มลายเซ็นโดยใช้ "ความลับของลายเซ็น" แทนที่จะเป็นความลับ API ของคุณ อัลกอริธึมที่รองรับคือ:
md5hash1
md5
sha1
sha256
sha512
ทั้งแอปพลิเคชันของคุณและ Vonage จำเป็นต้องตกลงกันว่าจะใช้อัลกอริทึมใด ในแดชบอร์ด ให้ไปที่หน้าการตั้งค่าบัญชีของคุณ และใต้ "การตั้งค่า API" คุณสามารถเลือกอัลกอริทึมที่จะใช้ได้ นี่เป็นตำแหน่งที่คุณจะพบ "ความลับของลายเซ็น" ของคุณ (แตกต่างจากความลับของ API)
สร้างไคลเอ็นต์โดยใช้ข้อมูลรับรองเหล่านี้ และอัลกอริทึมที่จะใช้ เช่น:
$ client = new Vonage Client ( new Vonage Client Credentials SignatureSecret ( API_KEY , SIGNATURE_SECRET , ' sha256 ' ));
เมื่อใช้ไคลเอ็นต์นี้ ข้อความ SMS API ของคุณจะถูกส่งเป็นข้อความที่ลงนาม
คุณอาจต้องการอ่านเอกสารเกี่ยวกับการลงนามข้อความ
หากคุณเปิดใช้งานการลงนามข้อความสำหรับข้อความขาเข้า SMS webhook จะรวมฟิลด์ sig
, nonce
และ timestamp
หากต้องการตรวจสอบว่าลายเซ็นมาจาก Vonage คุณจะต้องสร้างออบเจ็กต์ลายเซ็นโดยใช้ข้อมูลที่เข้ามา ข้อมูลลับของลายเซ็นของคุณ และวิธีการลายเซ็น จากนั้นใช้เมธอด check()
กับลายเซ็นจริงที่ได้รับ (ปกติคือ _GET['sig']
) เพื่อให้แน่ใจว่าถูกต้อง
$ signature = new Vonage Client Signature ( $ _GET , SIGNATURE_SECRET , ' sha256 ' );
// is it valid? Will be true or false
$ isValid = $ signature -> check ( $ _GET [ ' sig ' ]);
การใช้ความลับของลายเซ็นของคุณและพารามิเตอร์อื่นๆ ที่ให้มา ทำให้สามารถคำนวณและตรวจสอบลายเซ็นกับค่าลายเซ็นที่เข้ามาได้
Messages API ใช้เพื่อส่งข้อความขาออกที่หลากหลาย ปัจจุบันรองรับแพลตฟอร์มต่อไปนี้:
แต่ละแพลตฟอร์มเหล่านี้มีหมวดหมู่ข้อความที่แตกต่างกันที่คุณสามารถส่งได้ (เช่น ด้วย WhatsApp คุณสามารถส่งข้อความ รูปภาพ เสียง วิดีโอ ไฟล์หรือเทมเพลตได้ แต่สำหรับ Viber คุณสามารถส่งข้อความหรือรูปภาพเท่านั้น) . คุณสามารถค้นหาประเภทข้อความที่สามารถส่งได้ทั้งหมดภายใต้เนมสเปซ VonageMessagesChannel
เหตุผลที่แต่ละประเภทถูกแยกออกด้วยวิธีนี้ก็คือ แพลตฟอร์มและประเภทข้อความต้องการพารามิเตอร์ที่แตกต่างกันในการเรียก API
VonageMessagesClient
ได้รับการกำหนดค่าในลักษณะเดียวกันกับไคลเอ็นต์ SMS API ข้อแตกต่างก็คือการรับรองความถูกต้องอาจเป็นได้ทั้ง JSON Web Token (JWT) หรือการรับรองความถูกต้องขั้นพื้นฐาน คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าข้อมูลประจำตัวของลูกค้าได้ในส่วน "การใช้งาน" ของ ReadMe นี้
นี่คือตัวอย่างบางส่วน:
ขั้นแรก เราต้องสร้างวัตถุ WhatsAppText ใหม่ดังนี้:
$ whatsAppText = new Vonage Messages Channel WhatsApp WhatsAppText (
FROM_NUMBER ,
TO_NUMBER ,
' this is a WA text from vonage '
);
Messages API Client มีวิธีเดียวคือ send()
ซึ่งคุณสามารถส่งข้อความประเภทใดก็ได้ที่มีให้ ดังนั้น ในการส่งข้อความนี้ โค้ดต่อไปนี้จะดำเนินการดังกล่าว โดยสมมติว่าคุณได้ตั้งค่าไคลเอนต์ Vonage ของคุณอย่างถูกต้องแล้ว:
$ client -> messages ()-> send ( $ whatsAppText );
การตอบกลับของคุณจะเป็นเพย์โหลด JSON หากช่วงข้อผิดพลาดอยู่ที่ 200 หรือจะส่ง APIException
ที่เกี่ยวข้องหากอยู่ภายใน 400/500
ออบเจ็กต์ Channel
บางอย่างจำเป็นต้องมีอาร์กิวเมนต์เพิ่มเติมจึงจะถูกสร้างขึ้นได้ คุณสามารถดูการแมปคร่าวๆ ของข้อกำหนดเหล่านี้ได้โดยการเปรียบเทียบอาร์กิวเมนต์ของ Constructor กับเอกสารประกอบ API ข้อความเหล่านี้บางส่วนใช้ออบเจ็กต์ที่นำมาใช้ซ้ำได้แบบกำหนดเอง (ซึ่งอยู่ภายใต้เนมสเปซ VonageMessagesMessageObjects
) หนึ่งในนั้นคือรูปภาพ ดังนั้นนี่คือตัวอย่างวิธีส่งอิมเมจของ Viber:
$ imageObject = Vonage Messages MessageObjects ImageObject (
' https://picsum.photos/200/300 ' ,
' image caption '
);
$ viberImage = new Vonage Messages Channel Viber ViberImage (
FROM_NUMBER ,
TO_NUMBER ,
$ imageObject
);
$ client -> messages ()-> send ( $ viberImage );
Verify API ของ Vonage ทำให้ง่ายต่อการพิสูจน์ว่าผู้ใช้ระบุหมายเลขโทรศัพท์ของตนเองในระหว่างการสมัคร หรือใช้การตรวจสอบสิทธิ์ปัจจัยที่สองระหว่างการลงชื่อเข้าใช้
คุณสามารถเริ่มกระบวนการยืนยันได้โดยใช้รหัสดังนี้:
$ request = new Vonage Verify Request ( ' 14845551212 ' , ' My App ' );
$ response = $ client -> verify ()-> start ( $ request );
echo " Started verification with an id of: " . $ response -> getRequestId ();
เมื่อผู้ใช้ป้อนรหัส PIN ที่ได้รับแล้ว ให้เรียกใช้เมธอด check()
(ดูด้านล่าง) พร้อม ID คำขอและ PIN เพื่อยืนยันว่า PIN นั้นถูกต้อง
หากต้องการยกเลิกการตรวจสอบที่อยู่ระหว่างดำเนินการ หรือเพื่อกระตุ้นให้มีความพยายามครั้งต่อไปในการส่งรหัสยืนยัน คุณสามารถส่งออบเจ็กต์การตรวจสอบที่มีอยู่ไปยังไลบรารีไคลเอ็นต์ หรือใช้รหัสคำขอ:
$ client -> verify ()-> trigger ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
$ client -> verify ()-> cancel ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
ในทำนองเดียวกัน การตรวจสอบการยืนยันต้องใช้ PIN ที่ผู้ใช้ให้ไว้ และรหัสคำขอ:
try {
$ client -> verify ()-> check ( ' 00e6c3377e5348cdaf567e1417c707a5 ' , ' 1234 ' );
echo " Verification was successful (status: " . $ verification -> getStatus () . " ) n" ;
} catch ( Exception $ e ) {
echo " Verification failed with status " . $ e -> getCode ()
. " and error text "" . $ e -> getMessage () . ""n" ;
}
คุณสามารถตรวจสอบสถานะการยืนยันหรือเข้าถึงผลการตรวจสอบที่ผ่านมาได้โดยใช้รหัสคำขอ ออบเจ็กต์การตรวจสอบจะมีอินเทอร์เฟซที่หลากหลาย:
$ client -> verify ()-> search ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
echo " Codes checked for verification: " . $ verification -> getRequestId () . PHP_EOL ;
foreach ( $ verification -> getChecks () as $ check ){
echo $ check -> getDate ()-> format ( ' d-m-y ' ) . ' ' . $ check -> getStatus () . PHP_EOL ;
}
Verify API ของ Vonage รองรับ SCA (Secure Customer Authentication) ตามข้อกำหนดของ PSD2 (Payment Services Directive) และใช้โดยแอปพลิเคชันที่ต้องได้รับการยืนยันจากลูกค้าสำหรับการชำระเงิน รวมถึงผู้รับเงินและจำนวนเงินในข้อความ
เริ่มการตรวจสอบการชำระเงินในลักษณะนี้:
$ request = new Vonage Verify RequestPSD2 ( ' 14845551212 ' , ' My App ' );
$ response = $ client -> verify ()-> requestPSD2 ( $ request );
echo " Started verification with an id of: " . $ response [ ' request_id ' ];
เมื่อผู้ใช้ป้อนรหัส PIN ที่ได้รับแล้ว ให้เรียก /check
endpoint พร้อม ID คำขอและ PIN เพื่อยืนยันว่า PIN นั้นถูกต้อง
Verify v2 ของ Vonage อาศัยเวิร์กโฟลว์แบบอะซิงโครนัสมากกว่าผ่าน webhooks และเวิร์กโฟลว์การยืนยันที่ปรับแต่งได้มากขึ้นสำหรับนักพัฒนา หากต้องการเริ่มการตรวจสอบ คุณจะต้องมีไคลเอ็นต์ API ซึ่งอยู่ใต้เนมสเปซ verify2
การส่งคำขอยืนยันจำเป็นต้องมีช่องทางการสื่อสาร 'พื้นฐาน' เพื่อส่งมอบโหมดการตรวจสอบ คุณสามารถปรับแต่งการโต้ตอบเหล่านี้ได้โดยเพิ่ม 'ขั้นตอนการทำงาน' ที่แตกต่างกัน สำหรับเวิร์กโฟลว์แต่ละประเภท มีคลาส Verify2 ที่คุณสามารถสร้างได้ซึ่งจะจัดการเวิร์กโฟลว์เริ่มต้นให้กับคุณ ตัวอย่างเช่น:
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
);
$ smsRequest = new Vonage Verify2 Request SMSRequest ( ' TO_NUMBER ' );
$ client -> verify2 ()-> startVerification ( $ smsRequest );
วัตถุ SMSRequest
จะแก้ไขค่าเริ่มต้นสำหรับคุณ และจะสร้างวัตถุ workflow
เริ่มต้นเพื่อใช้ SMS อย่างไรก็ตาม คุณสามารถเพิ่มเวิร์กโฟลว์หลายรายการที่ทำงานโดยใช้ตรรกะสำรองได้ ตัวอย่างเช่น หากคุณต้องการสร้างการยืนยันที่พยายามรับรหัส PIN จากผู้ใช้ผ่านทาง SMS แต่ในกรณีที่มีปัญหากับการส่ง SMS คุณต้องการเพิ่มทางเลือกเสียง: คุณสามารถเพิ่มได้
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
);
$ smsRequest = new Vonage Verify2 Request SMSRequest ( ' TO_NUMBER ' , ' my-verification ' );
$ voiceWorkflow = new Vonage Verify2 VerifyObjects VerificationWorkflow ( Vonage Verify2 VerifyObjects VerificationWorkflow:: WORKFLOW_VOICE , ' TO_NUMBER ' );
$ smsRequest -> addWorkflow ( $ voiceWorkflow );
$ client -> verify2 ()-> startVerification ( $ smsRequest );
ซึ่งจะเป็นการเพิ่มเวิร์กโฟลว์เสียงให้กับคำขอ SMS ดั้งเดิม คำขอตรวจสอบจะพยายามแก้ไขกระบวนการตามลำดับที่ได้รับ (เริ่มต้นด้วยค่าเริ่มต้นสำหรับประเภทคำขอ)
ประเภทคำขอพื้นฐานมีดังนี้:
SMSRequest
WhatsAppRequest
WhatsAppInterativeRequest
EmailRequest
VoiceRequest
SilentAuthRequest
สำหรับการเพิ่มเวิร์กโฟลว์ คุณสามารถดูเวิร์กโฟลว์ที่ถูกต้องที่มีอยู่เป็นค่าคงที่ภายในออบเจ็กต์ VerificationWorkflow
เพื่อประสบการณ์นักพัฒนาที่ดีขึ้น คุณไม่สามารถสร้างเวิร์กโฟลว์ที่ไม่ถูกต้องได้เนื่องจากการตรวจสอบความถูกต้องที่เกิดขึ้นกับออบเจ็กต์
หากต้องการส่งโค้ด คุณจะต้องล้อมวิธีการเป็นแบบ try/catch เนื่องจากลักษณะของ API หากรหัสถูกต้อง เมธอดจะส่งกลับค่าบูลีน true
หากล้มเหลว ระบบจะโยนข้อยกเว้นที่เกี่ยวข้องจาก API ที่จะต้องตรวจพบ
$ code = ' 1234 ' ;
try {
$ client -> verify2 ()-> check ( $ code );
} catch ( Exception $ e ) {
var_dump ( $ e -> getMessage ())
}
เมื่อเหตุการณ์เกิดขึ้นระหว่างเวิร์กโฟลว์การยืนยัน กิจกรรมและการอัปเดตจะเริ่มทำงานเป็นเว็บฮุค คำขอเซิร์ฟเวอร์ขาเข้าที่เป็นไปตามมาตรฐาน PSR-7 สามารถถูกไฮเดรตลงในออบเจ็กต์ค่า webhook เพื่อการโต้ตอบที่ดียิ่งขึ้น คุณยังสามารถให้ความชุ่มชื้นจากอาเรย์ดิบได้ หากสำเร็จ คุณจะได้รับออบเจ็กต์ค่ากลับมาสำหรับประเภทของเหตุการณ์/การอัปเดต webhooks ที่เป็นไปได้คือ:
VerifyEvent
VerifyStatusUpdate
VerifySilentAuthUpdate
// From a request object
$ verificationEvent = Vonage Verify2 Webhook Factory:: createFromRequest ( $ request );
var_dump ( $ verificationEvent -> getStatus ());
// From an array
$ payload = $ request -> getBody ()-> getContents ()
$ verificationEvent = Vonage Verify2 Webhook Factory:: createFromArray ( $ payload );
var_dump ( $ verificationEvent -> getStatus ());
คุณสามารถยกเลิกคำขอได้หากต้องการ ก่อนที่ผู้ใช้จะดำเนินการใดๆ
$ requestId = ' c11236f4-00bf-4b89-84ba-88b25df97315 ' ;
$ client -> verify2 ()-> cancel ( $ requestId );
วิธีการ $client->voice()
ทั้งหมดต้องการให้ไคลเอนต์สร้างด้วย VonageClientCredentialsKeypair
หรือ VonageClientCredentialsContainer
ที่มีข้อมูลรับรอง Keypair
:
$ basic = new Vonage Client Credentials Basic ( VONAGE_API_KEY , VONAGE_API_SECRET );
$ keypair = new Vonage Client Credentials Keypair (
file_get_contents ( VONAGE_APPLICATION_PRIVATE_KEY_PATH ),
VONAGE_APPLICATION_ID
);
$ client = new Vonage Client ( new Vonage Client Credentials Container ( $ basic , $ keypair ));
คุณสามารถเริ่มการโทรโดยใช้ออบเจ็กต์ OutboundCall
:
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ outboundCall
-> setAnswerWebhook (
new Vonage Voice Webhook ( ' https://example.com/webhooks/answer ' )
)
-> setEventWebhook (
new Vonage Voice Webhook ( ' https://example.com/webhooks/event ' )
)
;
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
หากคุณต้องการให้ระบบสุ่มเลือกหมายเลข FROM จากหมายเลขที่เชื่อมโยงกับแอปพลิเคชัน คุณสามารถปล่อยพารามิเตอร์ตัวที่สองไว้ที่ Constructor ของ VonageVoiceOutboundCall
และระบบจะเลือกหมายเลขแบบสุ่มให้คุณ .
SimSwap ใช้มาตรฐาน CAMARA เพื่อกำหนดระยะเวลาที่ซิมอยู่ในอุปกรณ์มือถือ ซึ่งหมายความว่ากลไกการตรวจสอบสิทธิ์มีความซับซ้อนมากกว่า API อื่นๆ เล็กน้อย คุณจะต้องการ:
การมี หมายเลขสมาชิก ของคุณเองที่ลงทะเบียนกับ Vonage Global Network Platform แอปพลิเคชันแดชบอร์ดของคุณ ID คีย์ส่วนตัวของคุณ
มีสองวิธีที่ใช้ได้สำหรับ API นี้: checkSimSwap
และ checkSimSwapDate
นี่คือตัวอย่างการใช้ทั้งสองอย่าง:
$ credentials = new Vonage Client Credentials Gnp (
' 0777888888 ' ,
file_get_contents ( ' ./private.key ' ),
' 0dadaeb4-7c79-4d39-b4b0-5a6cc08bf537 '
);
$ client = new Vonage Client ( $ credentials );
$ swapResult = $ client -> simswap ()-> checkSimSwap ( ' 07999999999 ' , 500 );
if ( $ swapResult ) {
echo " Warning: SIM Swapped recently "
} else {
echo " SIM OK "
};
// Finding the swap date
echo $ client -> simswap ()-> checkSimSwapDate ( ' 07999999999 ' );
การยืนยันหมายเลขใช้มาตรฐาน CAMARA API และใช้เพื่อพิจารณาว่าคำขอนั้นถูกต้องหรือไม่ SDK ต่างจาก SDK อื่นๆ ตรงที่แบ่งออกเป็นระหว่างจุดเริ่มต้นของกระบวนการและจุดสิ้นสุดของกระบวนการ
คุณจะต้องการ:
การมี หมายเลขสมาชิก ของคุณเองที่ลงทะเบียนกับ Vonage Global Network Platform รหัสแอปพลิเคชันแดชบอร์ดของคุณ รหัสส่วนตัวของคุณ ดาวน์โหลดจาก Vonage Dashboard
buildFrontEndUrl()
บนไคลเอนต์ เมื่อเรียกสิ่งนี้ คุณจะต้องระบุเส้นทางที่แอปพลิเคชันของคุณคาดว่าจะได้รับการติดต่อกลับซึ่งมี code
เฉพาะ คุณจะต้องมีหมายเลขโทรศัพท์ที่ได้รับอนุญาตในพื้นที่ที่ได้รับอนุญาตจึงจะสามารถใช้งานได้ นี่คือตัวอย่างจำลอง: class VerificationController extends MyFrameworkAbsractController
{
$ credentials = new Vonage Client Credentials Gnp(
' 077380777111 ' ,
file_get_contents ( ' ../private.key ' ),
' 0dadaeb4-7c79-4d39-b4b0-5a6cc08bf537 '
)
$ client = new Vonage Client ( $ credentials );
$ verifyUrl = $ client -> numberVerification ()-> buildFrontEndUrl (
' 07777777777 ' ,
' https://myapp.com/auth/numberVerify '
);
return $ this -> render ( ' verify.html.twig ' , [
' verifyLink ' => $ verifyUrl
]);
}
code
แล้ว วิธีการส่งคืนบูลีนจาก API นี่คือตัวอย่าง: $ code = $ request -> get ( ' code ' );
$ result = $ client -> numberVerification ()-> verifyNumber (
' 09947777777 ' ,
$ code
);
if ( $ result ) {
Auth:: login ( $ request -> user ())
}
return redirect ( ' login ' );
}
API นี้ใช้สำหรับการรับส่งข้อความในแอปและประกอบด้วยฟีเจอร์และแนวคิดที่หลากหลาย สำหรับข้อมูลเพิ่มเติม โปรดดูที่เอกสารประกอบ API
$ credentials = new Vonage Client Credentials Keypair ( file_get_contents ( ' ./path-to-my-key.key ' , ' my-app-id ' ));
$ client = new Vonage Client ( $ credentials );
$ filter = new Vonage Conversation Filter ListConversationFilter ();
$ filter -> setStartDate ( ' 2018-01-01 10:00:00 ' );
$ filter -> setEndDate ( ' 2019-01-01 10:00:00 ' )
$ conversations = $ client -> conversations ()-> listConversations ( $ filter )
var_dump ( $ conversations );
$ credentials = new Vonage Client Credentials Keypair ( file_get_contents ( ' ./path-to-my-key.key ' , ' my-app-id ' ));
$ client = new Vonage Client ( $ credentials );
$ conversation = new CreateConversationRequest ( ' customer_chat ' , ' Customer Chat ' , ' https://example.com/image.png ' );
$ conversation -> setTtl ( 60 );
$ conversationNumber = new ConversationNumber ( ' 447700900000 ' );
$ conversationCallback = new ConversationCallback ( ' https://example.com/eventcallback ' );
$ conversationCallback -> setEventMask ( ' member:invited, member:joined ' );
$ conversationCallback -> setApplicationId ( ' afa393df-2c46-475b-b2d6-92da4ea05481 ' );
$ conversationCallback -> setNccoUrl ( ' https://example.com/ncco ' );
$ conversation -> setNumber ( $ conversationNumber );
$ conversation -> setConversationCallback ( $ conversationCallback );
$ response = $ this -> conversationsClient -> createConversation ( $ conversation );
var_dump ( $ response );
$ credentials = new Vonage Client Credentials Keypair ( file_get_contents ( ' ./path-to-my-key.key ' , ' my-app-id ' ));
$ client = new Vonage Client ( $ credentials );
$ filter = new ListUserConversationsFilter ();
$ filter -> setState ( ' INVITED ' );
$ filter -> setIncludeCustomData ( true );
$ filter -> setOrderBy ( ' created ' );
$ filter -> setStartDate ( ' 2018-01-01 10:00:00 ' );
$ filter -> setEndDate ( ' 2018-01-01 12:00:00 ' );
$ filter -> setPageSize ( 5 );
$ filter -> setOrder ( ' asc ' );
$ response = $ this -> conversationsClient -> listUserConversationsByUserId ( ' CON-d66d47de-5bcb-4300-94f0-0c9d4b948e9a ' );
foreach ( $ response as $ member ) {
$ members [] = $ member ;
}
var_dump ( $ members );
$ channel = Channel:: createChannel (Channel:: CHANNEL_TYPE_APP );
$ channel -> addUserFromTypes ([
' sms ' ,
' phone '
]);
$ channel -> addUserToField ( ' USR-82e028d9-9999-4f1e-8188-604b2d3471ec ' );
$ createMemberRequest = new CreateMemberRequest (
' invited ' ,
$ channel ,
' USR-82e028d9-5201-4f1e-8188-604b2d3471ec ' ,
' my_user_name ' ,
);
$ createMemberRequest -> setAudioPossible ( true );
$ createMemberRequest -> setAudioEnabled ( true );
$ createMemberRequest -> setAudioEarmuffed ( false );
$ createMemberRequest -> setAudioMuted ( false );
$ createMemberRequest -> setKnockingId ( ' 4f1e-8188 ' );
$ createMemberRequest -> setMemberIdInviting ( ' MEM-63f61863-4a51-4f6b-86e1-46edebio0391 ' );
$ createMemberRequest -> setFrom ( ' value ' );
$ response = $ this -> conversationsClient -> createMember (
$ createMemberRequest ,
' CON-63f61863-4a51-4f6b-86e1-46edebio0391 '
);
var_dump ( $ response );
รายการพารามิเตอร์ทั้งหมดสำหรับ NCCO Actions สามารถพบได้ในเอกสาร Voice API
แต่ละตัวอย่างเหล่านี้ใช้โครงสร้างต่อไปนี้เพื่อเพิ่มการดำเนินการให้กับการโทร:
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ ncco = new NCCO ();
// ADD ACTIONS TO THE NCCO OBJECT HERE
$ outboundCall -> setNCCO ( $ ncco );
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ ncco = new NCCO ();
$ ncco -> addAction ( Vonage Voice NCCO Action Record:: factory ([
' eventUrl ' => ' https://example.com/webhooks/event '
]);
$ outboundCall -> setNCCO ( $ ncco );
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
URL ของ webhook ของคุณจะได้รับเพย์โหลดดังนี้:
{
"start_time": "2020-10-29T14:30:24Z",
"recording_url": "https://api.nexmo.com/v1/files/<recording-id>",
"size": 27918,
"recording_uuid": "<recording-id>",
"end_time": "2020-10-29T14:30:31Z",
"conversation_uuid": "<conversation-id>",
"timestamp": "2020-10-29T14:30:31.619Z"
}
จากนั้นคุณสามารถดึงและจัดเก็บการบันทึกได้ดังนี้:
$recordingId = '<recording-id>';
$recordingUrl = 'https://api.nexmo.com/v1/files/' . $recordingId;
$data = $client->get($recordingUrl);
file_put_contents($recordingId.'.mp3', $data->getBody());
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ ncco = new NCCO ();
$ ncco -> addAction ( new Vonage Voice NCCO Action Talk ( ' This is a text to speech call from Vonage ' ));
$ outboundCall -> setNCCO ( $ ncco );
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ ncco = new NCCO ();
$ ncco -> addAction ( new Vonage Voice NCCO Action Stream ( ' https://example.com/sounds/my-audio.mp3 ' ));
$ outboundCall -> setNCCO ( $ ncco );
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
รองรับการป้อนปุ่มกดและเสียง หมายเหตุ การดำเนินการอินพุตต้องเป็นไปตามการดำเนินการโดยที่ bargeIn
ตั้งค่าเป็น true
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ ncco = new NCCO ();
$ ncco -> addAction ( Vonage Voice NCCO Action Talk:: factory ( ' Please record your name. ' ,[
' bargeIn ' => true ,
]));
$ ncco -> addAction ( Vonage Voice NCCO Action Input:: factory ([
' eventUrl ' => ' https://example.com/webhooks/event ' ,
' type ' => [
' speech ' ,
],
' speech ' => [
' endOnSilence ' => true ,
],
]));
$ outboundCall -> setNCCO ( $ ncco );
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
URL ของเว็บฮุคจะได้รับเพย์โหลดที่มีอินพุตจากผู้ใช้โดยมีระดับความเชื่อมั่นสัมพัทธ์สำหรับการอินพุตคำพูด
$ outboundCall = new Vonage Voice OutboundCall (
new Vonage Voice Endpoint Phone ( ' 14843331234 ' ),
new Vonage Voice Endpoint Phone ( ' 14843335555 ' )
);
$ ncco = new NCCO ();
$ ncco -> addAction ( new Vonage Voice NCCO Action Talk ( ' We are just testing the notify function, you do not need to do anything. ' ));
$ ncco -> addAction ( new Vonage Voice NCCO Action Notify ([
' foo ' => ' bar ' ,
], new Vonage Voice Webhook ( ' https://example.com/webhooks/notify ' )));
$ outboundCall -> setNCCO ( $ ncco );
$ response = $ client -> voice ()-> createOutboundCall ( $ outboundCall );
URL ของเว็บฮุคจะได้รับเพย์โหลดตามที่ระบุไว้ในคำขอ
คุณสามารถรับสายโดยใช้อ็อบเจ็กต์ VonageCallCall
หรือ UUID ของการโทรเป็นสตริง:
$ call = $ client -> voice ()-> get ( ' 3fd4d839-493e-4485-b2a5-ace527aacff3 ' );
echo $ call -> getDirection ();
คุณยังสามารถค้นหาการโทรโดยใช้ตัวกรองได้
$ filter = new Vonage Voice Filter VoiceFilter ();
$ filter -> setStatus ( ' completed ' );
foreach ( $ client -> search ( $ filter ) as $ call ){
echo $ call -> getDirection ();
}
แอปพลิเคชันเป็นคอนเทนเนอร์การกำหนดค่า คุณสามารถสร้างได้โดยใช้โครงสร้างอาร์เรย์:
$ application = new Vonage Application Application ();
$ application -> fromArray ([
' name ' => ' test application ' ,
' keys ' => [
' public_key ' => ' -----BEGIN PUBLIC KEY-----nMIIBIjANBgkqhkiG9w0BAQEFAAOCAnKOxjsU4pf/sMFi9N0jqcSLcjxu33Gnd/vynKnlw9SENi+UZR44GdjGdmfm1ntL1eA7IBh2HNnkYXnAwYzKJoa4eO3n0kYWekeIZawIwe/g9faFgkev+1xsOnOUNhPx2LhuLmgwWSRS4L5W851Xe3fnUQIDAQABn-----END PUBLIC KEY-----n '
],
' capabilities ' => [
' voice ' => [
' webhooks ' => [
' answer_url ' => [
' address ' => ' https://example.com/webhooks/answer ' ,
' http_method ' => ' GET ' ,
],
' event_url ' => [
' address ' => ' https://example.com/webhooks/event ' ,
' http_method ' => ' POST ' ,
],
]
],
' messages ' => [
' webhooks ' => [
' inbound_url ' => [
' address ' => ' https://example.com/webhooks/inbound ' ,
' http_method ' => ' POST '
],
' status_url ' => [
' address ' => ' https://example.com/webhooks/status ' ,
' http_method ' => ' POST '
]
]
],
' rtc ' => [
' webhooks ' => [
' event_url ' => [
' address ' => ' https://example.com/webhooks/event ' ,
' http_method ' => ' POST ' ,
],
]
],
' vbc ' => []
]
]);
$ client -> applications ()-> create ( $ application );
คุณยังสามารถส่งวัตถุแอปพลิเคชันให้กับลูกค้าได้:
$ a = new Vonage Application Application ();
$ a -> setName ( ' PHP Client Example ' );
$ a -> getVoiceConfig ()-> setWebhook ( ' answer_url ' , ' https://example.com/webhooks/answer ' , ' GET ' );
$ a -> getVoiceConfig ()-> setWebhook ( ' event_url ' , ' https://example.com/webhooks/event ' , ' POST ' );
$ a -> getMessagesConfig ()-> setWebhook ( ' status_url ' , ' https://example.com/webhooks/status ' , ' POST ' );
$ a -> getMessagesConfig ()-> setWebhook ( ' inbound_url ' , ' https://example.com/webhooks/inbound ' , ' POST ' );
$ a -> getRtcConfig ()-> setWebhook ( ' event_url ' , ' https://example.com/webhooks/event ' , ' POST ' );
$ a -> disableVbc ();
$ client -> applications ()-> create ( $ a );
คุณสามารถวนซ้ำแอปพลิเคชันทั้งหมดของคุณได้:
foreach ( $ client -> applications ()-> getAll () as $ application ){
echo $ application -> getName () . PHP_EOL ;
}
หรือคุณสามารถดึงข้อมูลแอปพลิเคชันโดยใช้สตริง UUID หรือวัตถุแอปพลิเคชัน
$ application = $ client -> applications ()-> get ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' );
เมื่อคุณมีออบเจ็กต์แอปพลิเคชันแล้ว คุณสามารถแก้ไขและบันทึกได้
$ application = $ client -> applications ()-> get ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' );
$ application -> setName ( ' Updated Application ' );
$ client -> applications ()-> update ( $ application );
คุณสามารถแสดงรายการหมายเลขที่บัญชีของคุณเป็นเจ้าของและอาจรวมการกรองด้วย:
search_pattern
:
0
- ตัวเลขขึ้นต้นด้วย pattern
1
- ตัวเลขรวมถึง pattern
2
- ตัวเลขลงท้ายด้วย pattern
$ filter = new Vonage Numbers Filter OwnedNumbers ();
$ filter
-> setPattern ( 234 )
-> setSearchPattern ( Vonage Numbers Filter OwnedNumbers:: SEARCH_PATTERN_CONTAINS )
;
$ response = $ client -> numbers ()-> searchOwned ( null , $ filter );
has_application
:
true
- หมายเลขที่แนบมากับใบสมัครfalse
- หมายเลขไม่ได้แนบมากับใบสมัคร $ filter = new Vonage Numbers Filter OwnedNumbers ();
$ filter -> setHasApplication ( true );
$ response = $ client -> numbers ()-> searchOwned ( $ filter );
application_id
:
$ filter = new Vonage Numbers Filter OwnedNumbers ();
$ filter -> setApplicationId ( " 66c04cea-68b2-45e4-9061-3fd847d627b8 " );
$ response = $ client -> numbers ()-> searchOwned ( $ filter );
คุณสามารถค้นหาหมายเลขที่มีจำหน่ายในประเทศใดประเทศหนึ่งได้:
$ numbers = $ client -> numbers ()-> searchAvailable ( ' US ' );
ตามค่าเริ่มต้น ระบบจะส่งคืนผลลัพธ์ 10 รายการแรกเท่านั้น คุณสามารถเพิ่มตัวกรอง VonageNumbersFilterAvailableNumbers
เพิ่มเติมเพื่อจำกัดการค้นหาของคุณให้แคบลง
หากต้องการซื้อหมายเลข คุณสามารถส่งค่าที่ส่งคืนจากการค้นหาหมายเลขได้:
$ numbers = $ client -> numbers ()-> searchAvailable ( ' US ' );
$ number = $ numbers -> current ();
$ client -> numbers ()-> purchase ( $ number -> getMsisdn (), $ number -> getCountry ());
หรือคุณสามารถระบุหมายเลขและประเทศด้วยตนเอง:
$ client -> numbers ()-> purchase ( ' 14155550100 ' , ' US ' );
หากต้องการอัปเดตหมายเลข ให้ใช้ numbers()->update
และส่งผ่านตัวเลือกการกำหนดค่าที่คุณต้องการเปลี่ยนแปลง หากต้องการล้างการตั้งค่า ให้ส่งผ่านค่าว่าง
$ number = $ client -> numbers ()-> get ( VONAGE_NUMBER );
$ number
-> setAppId ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' )
-> setVoiceDestination ( ' 447700900002 ' , ' tel ' )
-> setWebhook (
Vonage Number Number:: WEBHOOK_VOICE_STATUS ,
' https://example.com/webhooks/status '
)
-> setWebhook (
Vonage Number Number:: WEBHOOK_MESSAGE ,
' https://example.com/webhooks/inbound-sms '
)
;
$ client -> numbers ()-> update ( $ number );
echo " Number updated " . PHP_EOL ;
หากต้องการยกเลิกหมายเลข ให้ระบุ msisdn
:
$ client -> numbers ()-> cancel ( ' 447700900002 ' );
API มีไว้เพื่อให้คุณสามารถหมุนเวียนความลับ API ของคุณได้ คุณสามารถสร้างข้อมูลลับใหม่ได้ (สูงสุด 2 ข้อมูลลับ) และลบข้อมูลที่มีอยู่ออกเมื่อแอปพลิเคชันทั้งหมดได้รับการอัปเดตแล้ว
หากต้องการรับรายการความลับ:
$ secretsCollection = $ client -> account ()-> listSecrets ( API_KEY );
/** @var VonageAccountSecret $secret */
foreach ( $ secretsCollection -> getSecrets () as $ secret ) {
echo " ID: " . $ secret -> getId () . " (created " . $ secret -> getCreatedAt () . " ) n" ;
}
คุณสามารถสร้างข้อมูลลับใหม่ได้ (วันที่ที่สร้างขึ้นจะช่วยให้คุณรู้ว่าวันที่ใด):
$ client -> account ()-> createSecret ( API_KEY , ' awes0meNewSekret!!; ' );
และลบข้อมูลลับเก่า (แอปพลิเคชันใด ๆ ที่ยังคงใช้ข้อมูลรับรองเหล่านี้จะหยุดทำงาน):
try {
$ response = $ client -> account ()-> deleteSecret ( API_KEY , ' d0f40c7e-91f2-4fe0-8bc6-8942587b622c ' );
} catch ( Vonage Client Exception Request $ e ) {
echo $ e -> getMessage ();
}
หากคุณทราบรหัสนำหน้าของประเทศที่คุณต้องการโทร คุณสามารถใช้ปลายทาง prefix-pricing
เพื่อค้นหาค่าใช้จ่ายในการโทรไปยังหมายเลขนั้นได้ แต่ละคำนำหน้าสามารถส่งคืนได้หลายประเทศ (เช่น 1
ส่งคืน US
, CA
และ UM
):
$ results = $ client -> account ()-> getPrefixPricing ( ' 1 ' );
foreach ( $ results as $ price ) {
echo $ price -> getCountryCode (). PHP_EOL ;
echo $ price -> getCountryName (). PHP_EOL ;
foreach ( $ price -> getNetworks () as $ network ) {
echo $ network -> getName () . ' :: ' . $ network -> getCode (). ' :: ' . $ network -> getPrefixPrice (). PHP_EOL ;
}
echo " ---------------- " . PHP_EOL ;
}
ตรวจสอบจำนวนเครดิตที่เหลืออยู่ในบัญชีของคุณ:
$ response = $ client -> account ()-> getBalance ();
echo round ( $ response -> getBalance (), 2 ) . " EUR n" ;
ตรวจสอบการตั้งค่าปัจจุบันในบัญชี:
$ response = $ client -> account ()-> getConfig ();
print_r ( $ response -> toArray ());
อัปเดต URL โทรกลับเริ่มต้นสำหรับข้อความ SMS ขาเข้าและใบเสร็จรับเงินการจัดส่ง:
$ response = $ client -> account ()-> updateConfig ([
" sms_callback_url " => " http://example.com/webhooks/incoming-sms " ,
" dr_callback_url " => " http://example.com/webhooks/delivery-receipt "
]);
print_r ( $ response -> toArray ());
หากต้องการใช้ Network API ของ Vonage คุณจะต้องเปิดใช้งานภายใน Vonage Network Registry
เมื่อคุณลงทะเบียน MSNDIN แล้ว คุณจะสามารถใช้ SimSwap ได้
SimSwap ใช้กลไกการตรวจสอบความถูกต้องของ Global Network Platform ดังนั้นขั้นตอนการอนุญาตจึงดูแตกต่างจากไคลเอ็นต์ API อื่นๆ เล็กน้อย ภายใต้ประทุน SDK จะจัดการการเรียกหลายครั้งเพื่อให้คุณกำหนดค่าโทเค็นการเข้าถึงมาตรฐาน CAMARA
ต่อไปนี้คือตัวอย่างการตรวจสอบว่ามีการสลับซิมเมื่อเร็วๆ นี้หรือไม่:
$ credentials = new Vonage Client Credentials Gnp (
' tel:+447700900000 ' ,
fopen ( ' ./my-private-key ' ),
' my-application-id '
);
$ client = new Vonage Client ( $ credentials );
if ( $ client -> simswap ()-> checkSimSwap ( ' 07700009999 ' , 240 )) {
echo ' Warning: SIM Swap Check Failed '
} else {
echo ' SIM Swap Check Pass '
}
และนี่คือวิธีดึงข้อมูลวันที่สลับ:
$ credentials = new Vonage Client Credentials Gnp (
' tel:+447700900000 ' ,
fopen ( ' ./my-private-key ' ),
' my-application-id '
);
$ client = new Vonage Client ( $ credentials );
$ date = $ client -> simswap ()-> checkSimSwapDate ( ' 07700009999 ' )
echo $ date;
Number Insights API ช่วยให้ผู้ใช้ตรวจสอบได้ว่าตัวเลขนั้นถูกต้อง และดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้งาน
คุณสามารถใช้วิธี basic()
หรือ standard()
(มีวิธี advanced()
ได้ แต่ขอแนะนำให้ใช้ตัวเลือก async เพื่อรับข้อมูลขั้นสูง) เช่นนี้
try {
$ insights = $ client -> insights ()-> basic ( PHONE_NUMBER );
echo $ insights -> getNationalFormatNumber ();
} catch ( Exception $ e ) {
// for the Vonage-specific exceptions, try the `getEntity()` method for more diagnostic information
}
ข้อมูลจะถูกส่งกลับในตัวแปร $insights
ในตัวอย่างด้านบน
หากต้องการรับข้อมูลเชิงลึกขั้นสูง ให้ใช้ฟีเจอร์อะซิงค์และระบุ URL สำหรับเว็บฮุคที่จะส่งไปที่:
try {
$ client -> insights ()-> advancedAsync ( PHONE_NUMBER , ' http://example.com/webhooks/number-insights ' );
} catch ( Exception $ e ) {
// for the Vonage-specific exceptions, try the `getEntity()` method for more diagnostic information
}
ตรวจสอบเอกสารประกอบสำหรับสิ่งที่คาดหวังในเว็บฮุคขาเข้าที่มีข้อมูลที่คุณร้องขอ
API นี้ใช้เพื่อสร้างและกำหนดค่าบัญชีย่อยที่เกี่ยวข้องกับบัญชีหลักของคุณและโอนเครดิต ยอดคงเหลือ และหมายเลขที่ซื้อระหว่างบัญชี API บัญชีย่อยถูกปิดใช้งานโดยค่าเริ่มต้น หากคุณต้องการใช้บัญชีย่อย โปรดติดต่อฝ่ายสนับสนุนเพื่อเปิดใช้ API ในบัญชีของคุณ
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' 34kokdf ' ;
$ subaccounts = $ client -> subaccount ()-> getSubaccounts ( $ apiKey );
var_dump ( $ subaccounts );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ payload = [
' name ' => ' sub name ' ,
' secret ' => ' s5r3fds ' ,
' use_primary_account_balance ' => false
];
$ account = new Account ();
$ account -> fromArray ( $ payload );
$ response = $ client -> subaccount ()-> createSubaccount ( $ apiKey , $ account );
var_dump ( $ response );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ subaccountKey = ' bbe6222f ' ;
$ response = $ client -> subaccount ()-> getSubaccount ( $ apiKey , $ subaccountKey );
var_dump ( $ response );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ subaccountKey = ' bbe6222f ' ;
$ payload = [
' suspended ' => true ,
' use_primary_account_balance ' => false ,
' name ' => ' Subaccount department B '
];
$ account = new Account ();
$ account -> fromArray ( $ payload );
$ response = $ client -> subaccount ()-> updateSubaccount ( $ apiKey , $ subaccountKey , $ account )
var_dump ( $ response );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ filter = new Vonage Subaccount Filter Subaccount([ ' subaccount ' => ' 35wsf5 ' ])
$ transfers = $ client -> subaccount ()-> getCreditTransfers ( $ apiKey );
var_dump ( $ transfers );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ transferRequest = ( new TransferCreditRequest ( $ apiKey ))
-> setFrom ( ' acc6111f ' )
-> setTo ( ' s5r3fds ' )
-> setAmount ( ' 123.45 ' )
-> setReference ( ' this is a credit transfer ' );
$ response = $ this -> subaccountClient -> makeCreditTransfer ( $ transferRequest );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ filter = new Vonage Subaccount Filter Subaccount ([ ' end_date ' => ' 2022-10-02 ' ]);
$ transfers = $ client -> subaccount ()-> getBalanceTransfers ( $ apiKey , $ filter );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ transferRequest = ( new TransferBalanceRequest ( $ apiKey ))
-> setFrom ( ' acc6111f ' )
-> setTo ( ' s5r3fds ' )
-> setAmount ( ' 123.45 ' )
-> setReference ( ' this is a credit transfer ' );
$ response = $ client -> subaccount ()-> makeBalanceTransfer ( $ transferRequest );
var_dump ( $ response );
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
$ apiKey = ' acc6111f ' ;
$ numberTransferRequest = ( new NumberTransferRequest ( $ apiKey ))
-> setFrom ( ' acc6111f ' )
-> setTo ( ' s5r3fds ' )
-> setNumber ( ' 4477705478484 ' )
-> setCountry ( ' GB ' );
$ response = $ client -> subaccount ()-> makeNumberTransfer ( $ numberTransferRequest );
var_dump ( $ response );
เอพีไอ | สถานะการเปิดตัว API | รองรับ? |
---|---|---|
API บัญชี | ความพร้อมใช้งานทั่วไป | |
API การแจ้งเตือน | ความพร้อมใช้งานทั่วไป | |
แอปพลิเคชัน API | ความพร้อมใช้งานทั่วไป | |
API การตรวจสอบ | เบต้า | |
API การสนทนา | เบต้า | |
API การจัดส่ง | เบต้า | |
API บัญชีภายนอก | เบต้า | |
สื่อ API | เบต้า | |
API การประชุม | ความพร้อมใช้งานทั่วไป | |
API ข้อความ | ความพร้อมใช้งานทั่วไป | |
API ข้อมูลเชิงลึกด้านตัวเลข | ความพร้อมใช้งานทั่วไป | |
API การจัดการหมายเลข | ความพร้อมใช้งานทั่วไป | |
API ราคา | ความพร้อมใช้งานทั่วไป | |
API การเชื่อมต่อ ProActive | เบต้า | |
ทำซ้ำ API | ความพร้อมใช้งานทั่วไป | |
API รายงาน | เบต้า | |
SMS API | ความพร้อมใช้งานทั่วไป | |
API บัญชีย่อย | ความพร้อมใช้งานทั่วไป | |
ตรวจสอบ API | ความพร้อมใช้งานทั่วไป | |
ตรวจสอบ API (เวอร์ชัน 2) | ความพร้อมใช้งานทั่วไป | |
เสียง API | ความพร้อมใช้งานทั่วไป |
เมื่อเวลาผ่านไป Vonage API จะพัฒนาและเพิ่มคุณสมบัติใหม่ เปลี่ยนวิธีการทำงานของคุณสมบัติที่มีอยู่ และเลิกใช้งานและลบวิธีการและคุณสมบัติเก่า ๆ เพื่อช่วยให้นักพัฒนาทราบเมื่อมีการเปลี่ยนแปลงการเลิกใช้งาน SDK จะเรียกใช้คำเตือน E_USER_DEPRECATION
คำเตือนเหล่านี้จะไม่หยุดการเรียกใช้โค้ด แต่อาจสร้างความรำคาญในสภาพแวดล้อมการใช้งานจริงได้
เพื่อช่วยเหลือในเรื่องนี้ โดยค่าเริ่มต้นการแจ้งเตือนเหล่านี้จะถูกระงับ ในการพัฒนา คุณสามารถเปิดใช้งานคำเตือนเหล่านี้ได้โดยส่งตัวเลือกการกำหนดค่าเพิ่มเติมไปยังตัวสร้าง VonageClient
ที่เรียกว่า show_deprecations
การเปิดใช้งานตัวเลือกนี้จะแสดงประกาศการเลิกใช้งานทั้งหมด
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
[
' show_deprecations ' => true
]
);
หากคุณสังเกตเห็นการแจ้งเตือนการเลิกใช้งานมากเกินไปในสภาพแวดล้อมการใช้งานจริง ตรวจสอบให้แน่ใจว่าไม่มีตัวเลือกการกำหนดค่า หรืออย่างน้อยตั้งค่าเป็น false
unable to get local issuer certificate
ผู้ใช้บางรายมีปัญหาในการส่งคำขอเนื่องจากข้อผิดพลาดต่อไปนี้:
Fatal error: Uncaught exception 'GuzzleHttpExceptionRequestException' with message 'cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)'
นี่เป็นเพราะการติดตั้ง PHP บางตัวไม่ได้จัดส่งพร้อมกับรายการใบรับรอง CA ที่เชื่อถือได้ นี่เป็นปัญหาการกำหนดค่าระบบ และไม่เฉพาะเจาะจงกับ cURL หรือ Vonage
สิ่งสำคัญ : ในย่อหน้าถัดไป เรามีลิงก์ไปยังชุดใบรับรอง CA Vonage ไม่รับประกันความปลอดภัยของชุดรวมนี้ และคุณควรตรวจสอบด้วยตนเองก่อนที่จะติดตั้งชุด CA ใดๆ บนเครื่องของคุณ
เพื่อแก้ไขปัญหานี้ ให้ดาวน์โหลดรายการใบรับรอง CA ที่เชื่อถือได้ (เช่น ชุดขด) และคัดลอกลงในเครื่องของคุณ เมื่อเสร็จแล้ว ให้แก้ไข php.ini
และตั้งค่าพารามิเตอร์ curl.cainfo
:
# Linux/MacOS
curl.cainfo = "/etc/pki/tls/cacert.pem"
# Windows
curl.cainfo = "C:phpextrassslcacert.pem"
เราอนุญาตให้ใช้อะแดปเตอร์ HTTPlug หรือไคลเอนต์ HTTP ที่เข้ากันได้กับ PSR-18 ดังนั้นคุณสามารถสร้างไคลเอนต์ที่มีการกำหนดค่าอื่นได้หากต้องการ เช่น เพื่อคำนึงถึงพร็อกซีในเครื่อง หรือจัดการกับสิ่งอื่นที่เฉพาะเจาะจงสำหรับการตั้งค่าของคุณ
นี่คือตัวอย่างที่ลดการหมดเวลาเริ่มต้นลงเหลือ 5 วินาทีเพื่อหลีกเลี่ยงความล่าช้าที่ยาวนานหากคุณไม่มีเส้นทางไปยังเซิร์ฟเวอร์ของเรา:
$ adapter_client = new Http Adapter Guzzle6 Client ( new GuzzleHttp Client ([ ' timeout ' => 5 ]));
$ vonage_client = new Vonage Client ( new Vonage Client Credentials Basic ( $ api_key , $ api_secret ), [], $ adapter_client );
เมื่อมีสิ่งผิดปกติเกิดขึ้น คุณจะได้รับ Exception
คลาสข้อยกเว้นของ Vonage VonageClientExceptionRequest
และ VonageClientExceptionServer
รองรับเมธอด getEntity()
เพิ่มเติม ซึ่งคุณสามารถใช้นอกเหนือจาก getCode()
และ getMessage()
เพื่อค้นหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ผิดพลาด โดยทั่วไปเอนทิตีที่ส่งคืนจะเป็นออบเจ็กต์ที่เกี่ยวข้องกับการดำเนินการ หรือออบเจ็กต์การตอบสนองจากการเรียก API
หากคุณมีการติดตั้งแพ็คเกจที่ขัดแย้งกันซึ่งไม่สามารถอยู่ร่วมกับแพ็คเกจ guzzlehttp/guzzle
ที่เราแนะนำได้ คุณสามารถติดตั้งแพ็คเกจ vonage/client-core
พร้อมกับแพ็คเกจใดก็ได้ที่ตรงตามข้อกำหนด php-http/client-implementation
ดูหน้า Packagist สำหรับการติดตั้งใช้งานไคลเอ็นต์สำหรับตัวเลือกต่างๆ
ไลบรารีไคลเอนต์ของเรารองรับการบันทึกคำขอและการตอบกลับสำหรับการแก้ไขจุดบกพร่องผ่านกลไกการบันทึกที่เข้ากันได้กับ PSR-3 หากมีการส่งตัวเลือก debug
ไปยังไคลเอนต์และมีการตั้งค่าตัวบันทึกที่เข้ากันได้กับ PSR-3 ในโรงงานบริการของลูกค้าของเรา เราจะใช้ตัวบันทึกเพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่อง
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( ' abcd1234 ' , ' s3cr3tk3y ' ), [ ' debug ' => true ]);
$ logger = new Monolog Logger ( ' test ' );
$ logger -> pushHandler ( new Monolog Handler StreamHandler ( __DIR__ . ' /log.txt ' , Monolog Logger:: DEBUG ));
$ client -> getFactory ()-> set ( PSR Log LoggerInterface::class, $ logger );
การเปิดใช้งานการบันทึกการแก้ไขจุดบกพร่องมีศักยภาพในการบันทึกข้อมูลที่ละเอียดอ่อน ห้ามเปิดใช้งานในการใช้งานจริง
ไลบรารีนี้มีชุดทดสอบเต็มรูปแบบที่ออกแบบมาเพื่อรันด้วย PHPUnit
หากต้องการเรียกใช้ ให้ใช้ผู้แต่ง:
composer test
โปรดทราบ: ชุดทดสอบนี้มีขนาดใหญ่และอาจต้องใช้หน่วยความจำจำนวนมากจึงจะรันได้ หากคุณพบข้อผิดพลาด "เปิดไฟล์มากเกินไป" ใน MacOS หรือ Linux แสดงว่ามีวิธีแฮ็กเพื่อเพิ่มจำนวนพอยน์เตอร์ไฟล์ที่อนุญาต เพิ่มจำนวนไฟล์ที่สามารถเปิดได้โดยป้อนข้อมูลต่อไปนี้บนบรรทัดคำสั่ง (10240 คือจำนวนพอยน์เตอร์สูงสุดที่ MacOS จะเปิดในปัจจุบัน):
ulimit -n 10240
ห้องสมุดนี้ได้รับการพัฒนาอย่างต่อเนื่อง และเรายินดีรับฟังจากคุณ! โปรดอย่าลังเลที่จะสร้างปัญหาหรือเปิดคำขอดึงคำถาม ความคิดเห็น ข้อเสนอแนะ และข้อเสนอแนะของคุณ