Library ini memerlukan minimal PHP versi 8.1
Ini adalah perpustakaan klien PHP untuk menggunakan API Vonage. Untuk menggunakan ini, Anda memerlukan akun Vonage. Daftar gratis di sini.
Untuk menggunakan perpustakaan klien Anda harus sudah membuat akun Vonage.
Untuk menginstal perpustakaan klien PHP ke proyek Anda, kami sarankan menggunakan Komposer.
composer require vonage/client
Perhatikan bahwa ini sebenarnya menunjuk ke perpustakaan pembungkus yang mencakup klien HTTP -dan- perpustakaan inti ini. Anda dapat menginstal perpustakaan ini langsung dari Komposer jika diinginkan, dengan kemampuan untuk memilih klien HTTP yang digunakan proyek Anda.
Anda tidak perlu mengkloning repositori ini untuk menggunakan perpustakaan ini di proyek Anda sendiri. Gunakan Komposer untuk menginstalnya dari Packagist.
Jika Anda baru mengenal Komposer, berikut beberapa sumber yang mungkin berguna bagi Anda:
Jika Anda menggunakan Composer, pastikan autoloader disertakan dalam file bootstrap proyek Anda:
require_once " vendor/autoload.php " ;
Buat klien dengan kunci dan rahasia API Anda:
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
Untuk tujuan pengujian, Anda mungkin ingin mengubah URL yang diminta oleh vonage/client
dari api.vonage.com
ke yang lain. Anda dapat melakukan ini dengan menyediakan array yang berisi base_api_url
sebagai parameter kedua saat membuat instance VonageClient
.
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
[
' base_api_url ' => ' https://example.com '
]
);
Untuk API yang biasanya mencapai rest.nexmo.com
, memberikan base_rest_url
sebagai opsi ke konstruktor akan mengubah permintaan tersebut.
Untuk menggunakan API SMS Vonage untuk mengirim pesan SMS, panggil metode $client->sms()->send()
.
Objek pesan digunakan untuk membuat pesan SMS. Setiap jenis pesan dapat dibuat dengan parameter yang diperlukan, dan antarmuka yang lancar menyediakan akses ke parameter opsional.
$ text = new Vonage SMS Message SMS ( VONAGE_TO , VONAGE_FROM , ' Test message using PHP client library ' );
$ text -> setClientRef ( ' test-message ' );
Objek pesan diteruskan ke metode send
:
$ response = $ client -> sms ()-> send ( $ text );
Setelah dikirim, objek pesan dapat digunakan untuk mengakses data respons.
$ data = $ response -> current ();
echo " Sent message to " . $ data -> getTo () . " . Balance is now " . $ data -> getRemainingBalance () . PHP_EOL ;
Karena setiap pesan SMS dapat dipecah menjadi beberapa pesan, responsnya berisi objek untuk setiap pesan yang dihasilkan. Anda dapat memeriksa untuk melihat berapa banyak pesan yang dihasilkan menggunakan fungsi count()
standar di PHP. Jika Anda ingin mendapatkan pesan pertama, Anda dapat menggunakan metode current()
pada responsnya.
$ data = $ response -> current ();
$ data -> getRemainingBalance ();
foreach ( $ response as $ index => $ data ){
$ data -> getRemainingBalance ();
}
Contoh pengiriman juga memiliki contoh yang berfungsi penuh.
Anda dapat menggunakan metode isGsm7()
statis dalam kode Klien SMS untuk menentukan apakah akan mengirim pesan menggunakan pengkodean GSM-7 atau Unicode. Berikut ini contohnya:
$ 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 ' );
}
Pesan masuk dikirim ke aplikasi Anda sebagai webhook. Pustaka Klien menyediakan cara untuk membuat objek pesan masuk dari webhook:
try {
$ inbound = Vonage SMS Webhook Factory:: createFromGlobals ();
error_log ( $ inbound -> getText ());
} catch ( InvalidArgumentException $ e ) {
error_log ( ' invalid message ' );
}
Anda mungkin juga ingin membaca dokumentasi tentang penandatanganan pesan.
SMS API mendukung kemampuan untuk menandatangani pesan dengan membuat dan menambahkan tanda tangan menggunakan "Rahasia Tanda Tangan" dan bukan rahasia API Anda. Algoritma yang didukung adalah:
md5hash1
md5
sha1
sha256
sha512
Baik aplikasi Anda maupun Vonage harus menyetujui algoritma mana yang digunakan. Di dasbor, kunjungi halaman pengaturan akun Anda dan di bawah "Pengaturan API" Anda dapat memilih algoritma yang akan digunakan. Ini juga merupakan lokasi di mana Anda akan menemukan "Rahasia Tanda Tangan" Anda (berbeda dengan rahasia API).
Buat klien menggunakan kredensial ini, dan algoritme yang akan digunakan, misalnya:
$ client = new Vonage Client ( new Vonage Client Credentials SignatureSecret ( API_KEY , SIGNATURE_SECRET , ' sha256 ' ));
Dengan menggunakan klien ini, pesan SMS API Anda akan dikirim sebagai pesan yang ditandatangani.
Anda mungkin juga ingin membaca dokumentasi tentang penandatanganan pesan.
Jika Anda mengaktifkan penandatanganan pesan untuk pesan masuk, webhook SMS akan menyertakan bidang sig
, nonce
dan timestamp
. Untuk memverifikasi tanda tangan dari Vonage, Anda membuat objek Tanda Tangan menggunakan data masuk, rahasia tanda tangan Anda, dan metode tanda tangan. Kemudian gunakan metode check()
dengan tanda tangan sebenarnya yang diterima (biasanya _GET['sig']
) untuk memastikan kebenarannya.
$ signature = new Vonage Client Signature ( $ _GET , SIGNATURE_SECRET , ' sha256 ' );
// is it valid? Will be true or false
$ isValid = $ signature -> check ( $ _GET [ ' sig ' ]);
Dengan menggunakan rahasia tanda tangan Anda dan parameter lain yang disediakan, tanda tangan dapat dihitung dan diperiksa terhadap nilai tanda tangan yang masuk.
Messages API digunakan untuk mengirim berbagai pesan keluar. Platform berikut saat ini didukung:
Masing-masing platform ini memiliki kategori pesan berbeda yang dapat Anda kirim (misalnya, dengan WhatsApp Anda dapat mengirim teks, gambar, audio, video, file atau templat, namun untuk Viber Anda hanya dapat mengirim teks atau gambar) . Anda dapat menemukan semua jenis pesan yang dapat dikirim di bawah namespace VonageMessagesChannel
. Alasan setiap jenis dipisahkan dengan cara ini adalah karena platform dan jenis pesan memerlukan parameter berbeda dalam panggilan API.
VonageMessagesClient
dikonfigurasi dengan cara yang mirip dengan Klien SMS API. Bedanya, autentikasinya bisa berupa JSON Web Token (JWT) atau Basic Authentication. Anda dapat menemukan informasi lebih lanjut tentang cara mengatur kredensial Klien Anda di bagian 'Penggunaan' ReadMe ini.
Berikut beberapa contohnya:
Pertama, kita perlu membuat objek WhatsAppText baru seperti:
$ whatsAppText = new Vonage Messages Channel WhatsApp WhatsAppText (
FROM_NUMBER ,
TO_NUMBER ,
' this is a WA text from vonage '
);
Klien API Pesan memiliki satu metode, send()
tempat Anda dapat mengirim jenis pesan apa pun yang disediakan. Jadi, untuk mengirim pesan ini, kode berikut akan melakukannya, dengan asumsi Anda telah menyiapkan klien Vonage Anda dengan benar:
$ client -> messages ()-> send ( $ whatsAppText );
Respons Anda akan berupa payload JSON jika rentang kesalahannya 200, atau akan memunculkan APIException
yang relevan jika berada dalam 400/500.
Beberapa objek Channel
memerlukan lebih banyak argumen untuk dapat dibuat. Anda dapat melihat pemetaan kasar persyaratan ini dengan membandingkan argumen konstruktor vs. Dokumentasi API. Beberapa pesan ini mengambil objek khusus yang dapat digunakan kembali (yang berada di bawah namespace VonageMessagesMessageObjects
). Salah satunya adalah gambar - berikut ini contoh cara mengirim Gambar 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 );
API Verifikasi Vonage memudahkan pembuktian bahwa pengguna telah memberikan nomor teleponnya sendiri saat mendaftar, atau menerapkan autentikasi faktor kedua saat masuk.
Anda dapat memulai proses verifikasi menggunakan kode seperti ini:
$ request = new Vonage Verify Request ( ' 14845551212 ' , ' My App ' );
$ response = $ client -> verify ()-> start ( $ request );
echo " Started verification with an id of: " . $ response -> getRequestId ();
Setelah pengguna memasukkan kode pin yang mereka terima, panggil metode check()
(lihat di bawah) dengan ID permintaan dan PIN untuk mengonfirmasi bahwa PIN sudah benar.
Untuk membatalkan verifikasi yang sedang berlangsung, atau untuk memicu upaya pengiriman kode konfirmasi berikutnya, Anda dapat meneruskan objek verifikasi yang ada ke pustaka klien, atau cukup menggunakan ID permintaan:
$ client -> verify ()-> trigger ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
$ client -> verify ()-> cancel ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
Dengan cara yang sama, pemeriksaan verifikasi memerlukan PIN yang diberikan pengguna, dan ID permintaan:
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" ;
}
Anda dapat memeriksa status verifikasi, atau mengakses hasil verifikasi sebelumnya menggunakan ID permintaan. Objek verifikasi kemudian akan menyediakan antarmuka yang kaya:
$ 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 ;
}
Verifikasi API Vonage memiliki dukungan SCA (Otentikasi Pelanggan Aman), yang diwajibkan oleh PSD2 (Petunjuk Layanan Pembayaran) dan digunakan oleh aplikasi yang perlu mendapatkan konfirmasi dari pelanggan untuk pembayaran. Ini termasuk penerima pembayaran dan jumlah dalam pesan.
Mulai verifikasi pembayaran seperti ini:
$ request = new Vonage Verify RequestPSD2 ( ' 14845551212 ' , ' My App ' );
$ response = $ client -> verify ()-> requestPSD2 ( $ request );
echo " Started verification with an id of: " . $ response [ ' request_id ' ];
Setelah pengguna memasukkan kode pin yang mereka terima, panggil titik akhir /check
dengan ID permintaan dan pin untuk mengonfirmasi bahwa pin tersebut benar.
Verifikasi v2 Vonage lebih mengandalkan alur kerja asinkron melalui. webhook, dan alur kerja Verifikasi yang lebih dapat disesuaikan untuk pengembang. Untuk memulai verifikasi, Anda memerlukan klien API, yang berada di bawah namespace verify2
.
Membuat permintaan Verifikasi memerlukan saluran komunikasi 'dasar' untuk menyampaikan mode verifikasi. Anda dapat menyesuaikan interaksi ini dengan menambahkan 'alur kerja' yang berbeda. Untuk setiap jenis alur kerja, ada kelas Verify2 yang bisa Anda buat yang akan menangani alur kerja awal untuk Anda. Misalnya:
$ 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 );
Objek SMSRequest
akan menyelesaikan default untuk Anda, dan akan membuat objek workflow
default untuk menggunakan SMS. Namun, Anda dapat menambahkan beberapa alur kerja yang beroperasi dengan logika fall-back. Misalnya, jika Anda ingin membuat Verifikasi yang mencoba mendapatkan kode PIN dari pengguna melalui. SMS, namun jika ada masalah dengan pengiriman SMS Anda ingin menambahkan pengganti Suara: Anda dapat menambahkannya.
$ 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 );
Ini menambahkan alur kerja suara ke permintaan SMS asli. Permintaan verifikasi akan mencoba dan menyelesaikan proses sesuai urutan yang diberikan (dimulai dengan default untuk jenis permintaan).
Jenis permintaan dasar adalah sebagai berikut:
SMSRequest
WhatsAppRequest
WhatsAppInterativeRequest
EmailRequest
VoiceRequest
SilentAuthRequest
Untuk menambahkan alur kerja, Anda dapat melihat alur kerja valid yang tersedia sebagai konstanta dalam objek VerificationWorkflow
. Untuk pengalaman pengembang yang lebih baik, Anda tidak dapat membuat alur kerja yang tidak valid karena validasi yang terjadi pada objek.
Untuk mengirimkan kode, Anda harus mengapit metode dalam percobaan/tangkap karena sifat API. Jika kodenya benar, metode ini akan mengembalikan boolean true
. Jika gagal, ini akan memunculkan Pengecualian yang relevan dari API yang perlu ditangkap.
$ code = ' 1234 ' ;
try {
$ client -> verify2 ()-> check ( $ code );
} catch ( Exception $ e ) {
var_dump ( $ e -> getMessage ())
}
Saat peristiwa terjadi selama alur kerja verifikasi, peristiwa dan pembaruan akan diaktifkan sebagai webhook. Permintaan server masuk yang sesuai dengan standar PSR-7 dapat dimasukkan ke dalam objek nilai webhook untuk interaksi yang lebih baik. Anda juga dapat menghidrasinya dari bahan mentah. Jika berhasil, Anda akan menerima kembali objek nilai untuk jenis acara/pembaruan. Webhook yang mungkin adalah:
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 ());
Anda dapat membatalkan permintaan jika diperlukan, sebelum pengguna akhir mengambil tindakan apa pun.
$ requestId = ' c11236f4-00bf-4b89-84ba-88b25df97315 ' ;
$ client -> verify2 ()-> cancel ( $ requestId );
Semua metode $client->voice()
mengharuskan klien dibuat dengan VonageClientCredentialsKeypair
, atau VonageClientCredentialsContainer
yang menyertakan kredensial 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 ));
Anda dapat memulai panggilan menggunakan objek 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 );
Jika Anda ingin sistem secara acak memilih nomor FROM dari nomor yang ditautkan ke aplikasi, Anda dapat membiarkan parameter kedua pada konstruktor VonageVoiceOutboundCall
, dan sistem akan memilih nomor secara acak untuk Anda .
SimSwap menggunakan standar CAMARA untuk menentukan berapa lama SIM berada di dalam perangkat seluler. Artinya, mekanisme autentikasinya sedikit lebih kompleks dibandingkan API lainnya. Anda akan membutuhkan:
Untuk memiliki Nomor Pelanggan Anda sendiri yang telah terdaftar di Platform Jaringan Global Vonage. Aplikasi Dasbor Anda ID Kunci Pribadi Anda
Ada dua metode yang tersedia untuk API ini: checkSimSwap
dan checkSimSwapDate
.
Berikut ini contoh penggunaan keduanya:
$ 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 ' );
Verifikasi Nomor menggunakan standar CAMARA API dan digunakan untuk menentukan apakah suatu permintaan valid. Tidak seperti SDK lainnya, SDK dibagi antara awal proses dan akhir proses.
Anda akan membutuhkan:
Untuk memiliki Nomor Pelanggan Anda sendiri yang telah terdaftar di Platform Jaringan Global Vonage. Aplikasi Dasbor Anda ID Kunci Pribadi Anda, diunduh dari Dasbor Vonage
buildFrontEndUrl()
pada klien. Saat memanggil ini, Anda harus menyediakan rute yang diharapkan aplikasi Anda menerima panggilan balik yang berisi code
unik. Anda harus memiliki nomor telepon resmi di wilayah resmi agar ini dapat berfungsi. Berikut adalah contoh tiruan: 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
. Metode ini mengembalikan boolean dari API. Berikut ini contohnya: $ code = $ request -> get ( ' code ' );
$ result = $ client -> numberVerification ()-> verifyNumber (
' 09947777777 ' ,
$ code
);
if ( $ result ) {
Auth:: login ( $ request -> user ())
}
return redirect ( ' login ' );
}
API ini digunakan untuk perpesanan dalam aplikasi dan berisi berbagai fitur dan konsep. Untuk informasi lebih lanjut, lihat Dokumentasi 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 );
Daftar parameter lengkap untuk Tindakan NCCO dapat ditemukan di Dokumen Voice API.
Masing-masing contoh ini menggunakan struktur berikut untuk menambahkan tindakan ke panggilan:
$ 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 Anda akan menerima payload seperti ini:
{
"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"
}
Anda kemudian dapat mengambil dan menyimpan rekaman seperti ini:
$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 );
Mendukung entri keypad serta suara. Catatan. tindakan masukan harus mengikuti tindakan dengan bargeIn
disetel ke 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 webhook akan menerima payload yang berisi masukan dari pengguna dengan peringkat keyakinan relatif untuk masukan ucapan.
$ 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 webhook akan menerima payload seperti yang ditentukan dalam permintaan.
Anda dapat mengambil panggilan menggunakan objek VonageCallCall
, atau UUID panggilan sebagai string:
$ call = $ client -> voice ()-> get ( ' 3fd4d839-493e-4485-b2a5-ace527aacff3 ' );
echo $ call -> getDirection ();
Anda juga dapat mencari panggilan menggunakan Filter.
$ filter = new Vonage Voice Filter VoiceFilter ();
$ filter -> setStatus ( ' completed ' );
foreach ( $ client -> search ( $ filter ) as $ call ){
echo $ call -> getDirection ();
}
Aplikasi adalah wadah konfigurasi. Anda dapat membuatnya menggunakan struktur array:
$ 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 );
Anda juga dapat memberikan objek aplikasi kepada klien:
$ 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 );
Anda dapat mengulangi semua aplikasi Anda:
foreach ( $ client -> applications ()-> getAll () as $ application ){
echo $ application -> getName () . PHP_EOL ;
}
Atau Anda dapat mengambil aplikasi menggunakan string UUID, atau objek aplikasi.
$ application = $ client -> applications ()-> get ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' );
Setelah Anda memiliki objek aplikasi, Anda dapat memodifikasi dan menyimpannya.
$ application = $ client -> applications ()-> get ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' );
$ application -> setName ( ' Updated Application ' );
$ client -> applications ()-> update ( $ application );
Anda dapat mencantumkan nomor yang dimiliki oleh akun Anda dan secara opsional menyertakan pemfilteran:
search_pattern
:
0
- angka dimulai dengan pattern
1
- nomor tersebut mencakup pattern
2
- nomor diakhiri dengan 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
- Nomor tersebut dilampirkan pada aplikasifalse
- Nomor tersebut tidak dilampirkan pada aplikasi $ 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 );
Anda dapat mencari nomor yang tersedia untuk dibeli di negara tertentu:
$ numbers = $ client -> numbers ()-> searchAvailable ( ' US ' );
Secara default, ini hanya akan mengembalikan 10 hasil pertama. Anda dapat menambahkan filter VonageNumbersFilterAvailableNumbers
tambahan untuk mempersempit pencarian Anda.
Untuk membeli nomor, Anda dapat memasukkan nilai yang dikembalikan dari pencarian nomor:
$ numbers = $ client -> numbers ()-> searchAvailable ( ' US ' );
$ number = $ numbers -> current ();
$ client -> numbers ()-> purchase ( $ number -> getMsisdn (), $ number -> getCountry ());
Atau Anda dapat menentukan nomor dan negara secara manual:
$ client -> numbers ()-> purchase ( ' 14155550100 ' , ' US ' );
Untuk memperbarui nomor, gunakan numbers()->update
dan teruskan opsi konfigurasi yang ingin Anda ubah. Untuk menghapus pengaturan, masukkan nilai kosong.
$ 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 ;
Untuk membatalkan nomor, berikan msisdn
:
$ client -> numbers ()-> cancel ( ' 447700900002 ' );
API disediakan untuk memungkinkan Anda merotasi rahasia API Anda. Anda dapat membuat rahasia baru (maksimal dua rahasia) dan menghapus rahasia yang sudah ada setelah semua aplikasi diperbarui.
Untuk mendapatkan daftar rahasianya:
$ secretsCollection = $ client -> account ()-> listSecrets ( API_KEY );
/** @var VonageAccountSecret $secret */
foreach ( $ secretsCollection -> getSecrets () as $ secret ) {
echo " ID: " . $ secret -> getId () . " (created " . $ secret -> getCreatedAt () . " ) n" ;
}
Anda dapat membuat rahasia baru (tanggal yang dibuat akan membantu Anda mengetahui yang mana):
$ client -> account ()-> createSecret ( API_KEY , ' awes0meNewSekret!!; ' );
Dan hapus rahasia lama (aplikasi apa pun yang masih menggunakan kredensial ini akan berhenti bekerja):
try {
$ response = $ client -> account ()-> deleteSecret ( API_KEY , ' d0f40c7e-91f2-4fe0-8bc6-8942587b622c ' );
} catch ( Vonage Client Exception Request $ e ) {
echo $ e -> getMessage ();
}
Jika Anda mengetahui awalan negara yang ingin Anda hubungi, Anda dapat menggunakan titik akhir prefix-pricing
untuk mengetahui biaya untuk memanggil nomor tersebut. Setiap awalan dapat menghasilkan beberapa negara (misalnya 1
mengembalikan US
, CA
dan 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 ;
}
Periksa berapa banyak kredit yang tersisa di akun Anda:
$ response = $ client -> account ()-> getBalance ();
echo round ( $ response -> getBalance (), 2 ) . " EUR n" ;
Periksa pengaturan saat ini pada akun:
$ response = $ client -> account ()-> getConfig ();
print_r ( $ response -> toArray ());
Perbarui URL panggilan balik default untuk pesan SMS masuk dan tanda terima pengiriman:
$ 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 ());
Untuk menggunakan API Jaringan Vonage, Anda harus mengaktifkannya di dalam Registri Jaringan Vonage
Setelah Anda mendaftarkan MSNDIN, Anda akan dapat menggunakan SimSwap.
SimSwap menggunakan mekanisme otentikasi Platform Jaringan Global, sehingga alur otorisasi terlihat sedikit berbeda dari Klien API lainnya. Di balik terpalnya, SDK akan menangani beberapa panggilan bagi Anda untuk mengonfigurasi token akses standar CAMARA.
Berikut ini contoh pengecekan apakah SIM baru saja ditukar:
$ 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 '
}
Dan inilah cara Anda mengambil tanggal pertukaran:
$ 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 memungkinkan pengguna memeriksa apakah suatu nomor valid dan mengetahui lebih lanjut cara menggunakannya.
Anda dapat menggunakan metode basic()
atau standard()
(metode advanced()
tersedia, namun disarankan untuk menggunakan opsi async untuk mendapatkan info lanjutan), seperti ini:
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
}
Data dikembalikan dalam variabel $insights
pada contoh di atas.
Untuk mendapatkan wawasan lebih lanjut, gunakan fitur async dan berikan URL untuk webhook yang akan dikirim ke:
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
}
Lihat dokumentasi tentang apa yang diharapkan di webhook masuk yang berisi data yang Anda minta.
API ini digunakan untuk membuat dan mengonfigurasi sub-akun yang terkait dengan akun utama Anda dan mentransfer kredit, saldo, dan nomor yang dibeli antar akun. API sub-akun dinonaktifkan secara default. Jika Anda ingin menggunakan sub-akun, hubungi dukungan untuk mengaktifkan API di akun Anda.
$ 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 | Status Rilis API | Didukung? |
---|---|---|
API Akun | Ketersediaan Umum | |
API Peringatan | Ketersediaan Umum | |
API Aplikasi | Ketersediaan Umum | |
API Audit | Beta | |
API Percakapan | Beta | |
API Pengiriman | Beta | |
API Akun Eksternal | Beta | |
API Media | Beta | |
API Rapat | Ketersediaan Umum | |
API Pesan | Ketersediaan Umum | |
API Wawasan Angka | Ketersediaan Umum | |
API Manajemen Nomor | Ketersediaan Umum | |
API Penetapan Harga | Ketersediaan Umum | |
API Sambungan Proaktif | Beta | |
Sunting API | Ketersediaan Umum | |
API Laporan | Beta | |
API SMS | Ketersediaan Umum | |
API Sub-akun | Ketersediaan Umum | |
Verifikasi API | Ketersediaan Umum | |
Verifikasi API (Versi 2) | Ketersediaan Umum | |
API Suara | Ketersediaan Umum |
Seiring waktu, Vonage API berkembang dan menambahkan fitur baru, mengubah cara kerja fitur yang ada, serta menghentikan dan menghapus metode dan fitur lama. Untuk membantu pengembang mengetahui kapan perubahan penghentian dilakukan, SDK akan memicu peringatan E_USER_DEPRECATION
. Peringatan ini tidak akan menghentikan eksekusi kode, namun dapat mengganggu lingkungan produksi.
Untuk membantu hal ini, secara default pemberitahuan ini disembunyikan. Dalam pengembangan, Anda dapat mengaktifkan peringatan ini dengan meneruskan opsi konfigurasi tambahan ke konstruktor VonageClient
, yang disebut show_deprecations
. Mengaktifkan opsi ini akan menampilkan semua pemberitahuan penghentian.
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
[
' show_deprecations ' => true
]
);
Jika Anda melihat terlalu banyak pemberitahuan penghentian di lingkungan produksi, pastikan opsi konfigurasi tidak ada, atau setidaknya disetel ke false
.
unable to get local issuer certificate
Beberapa pengguna mengalami masalah dalam membuat permintaan karena kesalahan berikut:
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)'
Hal ini disebabkan beberapa instalasi PHP tidak dikirimkan bersama daftar sertifikat CA tepercaya. Ini adalah masalah konfigurasi sistem, dan tidak spesifik untuk cURL atau Vonage.
PENTING : Di paragraf berikutnya kami menyediakan tautan ke bundel sertifikat CA. Vonage tidak menjamin keamanan bundel ini, dan Anda harus meninjaunya sendiri sebelum menginstal bundel CA apa pun di mesin Anda.
Untuk mengatasi masalah ini, unduh daftar sertifikat CA tepercaya (misalnya bundel curl) dan salin ke mesin Anda. Setelah selesai, edit php.ini
dan atur parameter curl.cainfo
:
# Linux/MacOS
curl.cainfo = "/etc/pki/tls/cacert.pem"
# Windows
curl.cainfo = "C:phpextrassslcacert.pem"
Kami mengizinkan penggunaan adaptor HTTPlug apa pun atau klien HTTP yang kompatibel dengan PSR-18, sehingga Anda dapat membuat klien dengan konfigurasi alternatif jika Anda memerlukannya, misalnya untuk memperhitungkan proksi lokal, atau menangani hal lain yang spesifik untuk pengaturan Anda.
Berikut ini contoh yang mengurangi batas waktu default menjadi 5 detik untuk menghindari penundaan yang lama jika Anda tidak memiliki rute ke server kami:
$ 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 );
Jika terjadi kesalahan, Anda akan menerima Exception
. Kelas pengecualian Vonage VonageClientExceptionRequest
dan VonageClientExceptionServer
mendukung metode getEntity()
tambahan yang dapat Anda gunakan selain getCode()
dan getMessage()
untuk mengetahui lebih lanjut tentang apa yang salah. Entitas yang dikembalikan biasanya berupa objek yang terkait dengan operasi, atau objek respons dari panggilan API.
Jika Anda memiliki instalasi paket yang bertentangan dan tidak bisa berdampingan dengan paket guzzlehttp/guzzle
yang kami rekomendasikan, maka Anda dapat menginstal paket vonage/client-core
bersama dengan paket apa pun yang memenuhi persyaratan php-http/client-implementation
.
Lihat halaman Packagist untuk implementasi klien untuk mengetahui opsi.
Pustaka klien kami memiliki dukungan untuk mencatat permintaan dan respons untuk debugging melalui mekanisme logging yang kompatibel dengan PSR-3. Jika opsi debug
diteruskan ke klien dan logger yang kompatibel dengan PSR-3 diatur di pabrik layanan klien kami, kami akan menggunakan logger untuk tujuan debugging.
$ 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 );
MENGAKTIFKAN DEBUGGING LOGGING MEMILIKI POTENSI UNTUK LOGGING INFORMASI SENSITIF, JANGAN AKTIFKAN DALAM PRODUKSI
Perpustakaan ini memiliki rangkaian pengujian lengkap yang dirancang untuk dijalankan dengan PHPUnit.
Untuk menjalankannya, gunakan komposer:
composer test
Harap diperhatikan: rangkaian pengujian ini berukuran besar, dan mungkin memerlukan sejumlah besar memori untuk dijalankan. Jika Anda mengalami kesalahan "terlalu banyak file terbuka" di MacOS atau Linux, ada peretasan untuk meningkatkan jumlah penunjuk file yang diizinkan. Tingkatkan jumlah file yang dapat dibuka dengan memasukkan yang berikut ini pada baris perintah (10240 adalah jumlah maksimum pointer yang akan dibuka MacOS saat ini):
ulimit -n 10240
Perpustakaan ini dikembangkan secara aktif, dan kami senang mendengar pendapat Anda! Silakan membuat masalah atau membuka permintaan tarik dengan pertanyaan, komentar, saran, dan masukan Anda.