Diese Bibliothek erfordert eine PHP-Mindestversion von 8.1
Dies ist die PHP-Client-Bibliothek zur Verwendung der Vonage-API. Um dies nutzen zu können, benötigen Sie ein Vonage-Konto. Melden Sie sich hier kostenlos an.
Um die Kundenbibliothek nutzen zu können, müssen Sie ein Vonage-Konto erstellt haben.
Um die PHP-Client-Bibliothek in Ihrem Projekt zu installieren, empfehlen wir die Verwendung von Composer.
composer require vonage/client
Beachten Sie, dass dies tatsächlich auf eine Wrapper-Bibliothek verweist, die einen HTTP-Client und diese Kernbibliothek enthält. Sie können diese Bibliothek bei Bedarf direkt aus Composer installieren und dabei den HTTP-Client auswählen, den Ihr Projekt verwendet.
Sie müssen dieses Repository nicht klonen, um diese Bibliothek in Ihren eigenen Projekten zu verwenden. Verwenden Sie Composer, um es von Packagist aus zu installieren.
Wenn Sie neu bei Composer sind, finden Sie hier einige Ressourcen, die für Sie nützlich sein könnten:
Wenn Sie Composer verwenden, stellen Sie sicher, dass der Autoloader in der Bootstrap-Datei Ihres Projekts enthalten ist:
require_once " vendor/autoload.php " ;
Erstellen Sie einen Client mit Ihrem API-Schlüssel und -Geheimnis:
$ client = new Vonage Client ( new Vonage Client Credentials Basic ( API_KEY , API_SECRET ));
Zu Testzwecken möchten Sie möglicherweise die URL, an die vonage/client
Anfragen von api.vonage.com
sendet, in eine andere ändern. Sie können dies tun, indem Sie beim Erstellen einer VonageClient
-Instanz ein Array bereitstellen, das base_api_url
als zweiten Parameter enthält.
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
[
' base_api_url ' => ' https://example.com '
]
);
Bei APIs, die normalerweise auf rest.nexmo.com
zugreifen würden, werden diese Anforderungen durch die Bereitstellung einer base_rest_url
als Option für den Konstruktor geändert.
Um die SMS-API von Vonage zum Senden einer SMS-Nachricht zu verwenden, rufen Sie die Methode $client->sms()->send()
auf.
Zum Erstellen der SMS-Nachrichten wird ein Nachrichtenobjekt verwendet. Jeder Nachrichtentyp kann mit den erforderlichen Parametern erstellt werden, und eine fließende Schnittstelle bietet Zugriff auf optionale Parameter.
$ text = new Vonage SMS Message SMS ( VONAGE_TO , VONAGE_FROM , ' Test message using PHP client library ' );
$ text -> setClientRef ( ' test-message ' );
Das Nachrichtenobjekt wird an die send
übergeben:
$ response = $ client -> sms ()-> send ( $ text );
Nach dem Senden kann das Nachrichtenobjekt verwendet werden, um auf die Antwortdaten zuzugreifen.
$ data = $ response -> current ();
echo " Sent message to " . $ data -> getTo () . " . Balance is now " . $ data -> getRemainingBalance () . PHP_EOL ;
Da jede SMS-Nachricht in mehrere Nachrichten aufgeteilt werden kann, enthält die Antwort ein Objekt für jede generierte Nachricht. Mit der Standardfunktion count()
in PHP können Sie überprüfen, wie viele Nachrichten generiert wurden. Wenn Sie die erste Nachricht erhalten möchten, können Sie die Methode current()
für die Antwort verwenden.
$ data = $ response -> current ();
$ data -> getRemainingBalance ();
foreach ( $ response as $ index => $ data ){
$ data -> getRemainingBalance ();
}
Das Sendebeispiel enthält auch vollständige Arbeitsbeispiele.
Sie können eine statische isGsm7()
Methode innerhalb des SMS-Client-Codes verwenden, um zu bestimmen, ob die Nachricht mit GSM-7-Kodierung oder Unicode gesendet werden soll. Hier ist ein Beispiel:
$ 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 ' );
}
Eingehende Nachrichten werden als Webhook an Ihre Anwendung gesendet. Die Client-Bibliothek bietet eine Möglichkeit, ein eingehendes Nachrichtenobjekt aus einem Webhook zu erstellen:
try {
$ inbound = Vonage SMS Webhook Factory:: createFromGlobals ();
error_log ( $ inbound -> getText ());
} catch ( InvalidArgumentException $ e ) {
error_log ( ' invalid message ' );
}
Vielleicht möchten Sie auch die Dokumentation zum Signieren von Nachrichten lesen.
Die SMS-API unterstützt die Möglichkeit, Nachrichten zu signieren, indem eine Signatur mithilfe eines „Signaturgeheimnisses“ anstelle Ihres API-Geheimnisses generiert und hinzugefügt wird. Die unterstützten Algorithmen sind:
md5hash1
md5
sha1
sha256
sha512
Sowohl Ihre Anwendung als auch Vonage müssen sich darauf einigen, welcher Algorithmus verwendet wird. Besuchen Sie im Dashboard die Seite mit den Kontoeinstellungen und wählen Sie unter „API-Einstellungen“ den zu verwendenden Algorithmus aus. Dies ist auch der Ort, an dem Sie Ihr „Signaturgeheimnis“ finden (es unterscheidet sich vom API-Geheimnis).
Erstellen Sie einen Client mit diesen Anmeldeinformationen und dem zu verwendenden Algorithmus, zum Beispiel:
$ client = new Vonage Client ( new Vonage Client Credentials SignatureSecret ( API_KEY , SIGNATURE_SECRET , ' sha256 ' ));
Mit diesem Client werden Ihre SMS-API-Nachrichten als signierte Nachrichten gesendet.
Vielleicht möchten Sie auch die Dokumentation zum Signieren von Nachrichten lesen.
Wenn Sie die Nachrichtensignierung für eingehende Nachrichten aktiviert haben, enthält der SMS-Webhook die Felder sig
, nonce
und timestamp
. Um zu überprüfen, ob die Signatur von Vonage stammt, erstellen Sie mithilfe der eingehenden Daten, Ihres Signaturgeheimnisses und der Signaturmethode ein Signature-Objekt. Verwenden Sie dann die Methode check()
mit der tatsächlich empfangenen Signatur (normalerweise _GET['sig']
), um sicherzustellen, dass sie korrekt ist.
$ signature = new Vonage Client Signature ( $ _GET , SIGNATURE_SECRET , ' sha256 ' );
// is it valid? Will be true or false
$ isValid = $ signature -> check ( $ _GET [ ' sig ' ]);
Anhand Ihres Signaturgeheimnisses und der anderen bereitgestellten Parameter kann die Signatur berechnet und mit dem eingehenden Signaturwert verglichen werden.
Die Messages API wird zum Versenden verschiedener ausgehender Nachrichten verwendet. Die folgenden Plattformen werden derzeit unterstützt:
Jede dieser Plattformen verfügt über eine andere Kategorie von Nachrichten, die Sie senden können (mit WhatsApp können Sie beispielsweise Text, ein Bild, Audio, Video, eine Datei oder eine Vorlage senden, aber mit Viber können Sie nur einen Text oder ein Bild senden). . Sie finden alle sendbaren Nachrichtentypen unter dem Namensraum VonageMessagesChannel
. Der Grund dafür, dass jeder Typ auf diese Weise getrennt wird, liegt darin, dass die Plattform und der Nachrichtentyp unterschiedliche Parameter im API-Aufruf erfordern.
Der VonageMessagesClient
wird auf ähnliche Weise wie der SMS-API-Client konfiguriert. Der Unterschied besteht darin, dass die Authentifizierung entweder ein JSON Web Token (JWT) oder eine Standardauthentifizierung sein kann. Weitere Informationen zum Einrichten der Anmeldeinformationen Ihres Kunden finden Sie im Abschnitt „Nutzung“ dieser ReadMe-Datei.
Hier einige Beispiele:
Zuerst müssen wir ein neues WhatsAppText-Objekt erstellen, etwa so:
$ whatsAppText = new Vonage Messages Channel WhatsApp WhatsAppText (
FROM_NUMBER ,
TO_NUMBER ,
' this is a WA text from vonage '
);
Der Messages API Client verfügt über eine Methode, send()
mit der Sie jeden der bereitgestellten Nachrichtentypen senden können. Um diese Nachricht zu senden, wird der folgende Code dies tun, vorausgesetzt, Sie haben Ihren Vonage-Client bereits korrekt eingerichtet:
$ client -> messages ()-> send ( $ whatsAppText );
Ihre Antwort ist eine JSON-Nutzlast, wenn der Fehlerbereich bei 200 liegt, oder löst eine entsprechende APIException
aus, wenn sie innerhalb von 400/500 liegt.
Für die Erstellung einiger Channel
Objekte sind weitere Argumente erforderlich. Sie können die grobe Zuordnung dieser Anforderungen sehen, indem Sie die Konstruktorargumente mit der API-Dokumentation vergleichen. Einige dieser Nachrichten verwenden benutzerdefinierte wiederverwendbare Objekte (die sich im Namensraum VonageMessagesMessageObjects
befinden). Eines davon ist ein Bild – hier ist ein Beispiel dafür, wie man ein Viber-Bild sendet:
$ 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 );
Mit der Verify-API von Vonage können Sie ganz einfach nachweisen, dass ein Benutzer bei der Anmeldung seine eigene Telefonnummer angegeben hat, oder bei der Anmeldung eine Zwei-Faktor-Authentifizierung implementieren.
Sie können einen Verifizierungsprozess mit folgendem Code starten:
$ request = new Vonage Verify Request ( ' 14845551212 ' , ' My App ' );
$ response = $ client -> verify ()-> start ( $ request );
echo " Started verification with an id of: " . $ response -> getRequestId ();
Sobald der Benutzer den erhaltenen PIN-Code eingibt, rufen Sie die check()
Methode (siehe unten) mit der Anforderungs-ID und der PIN auf, um zu bestätigen, dass die PIN korrekt ist.
Um eine laufende Überprüfung abzubrechen oder den nächsten Versuch zum Senden des Bestätigungscodes auszulösen, können Sie entweder ein vorhandenes Überprüfungsobjekt an die Clientbibliothek übergeben oder einfach eine Anforderungs-ID verwenden:
$ client -> verify ()-> trigger ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
$ client -> verify ()-> cancel ( ' 00e6c3377e5348cdaf567e1417c707a5 ' );
Ebenso erfordert die Überprüfung einer Verifizierung die vom Benutzer angegebene PIN und die Anforderungs-ID:
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" ;
}
Sie können den Status einer Verifizierung überprüfen oder über eine Anforderungs-ID auf die Ergebnisse früherer Verifizierungen zugreifen. Das Verifizierungsobjekt stellt dann eine umfangreiche Schnittstelle bereit:
$ 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 ;
}
Die Verify API von Vonage bietet SCA-Unterstützung (Secure Customer Authentication), die von der PSD2 (Payment Services Directive) gefordert wird und von Anwendungen verwendet wird, die eine Bestätigung von Kunden für Zahlungen benötigen. In der Nachricht sind der Zahlungsempfänger und der Betrag enthalten.
Starten Sie die Verifizierung für eine Zahlung wie folgt:
$ request = new Vonage Verify RequestPSD2 ( ' 14845551212 ' , ' My App ' );
$ response = $ client -> verify ()-> requestPSD2 ( $ request );
echo " Started verification with an id of: " . $ response [ ' request_id ' ];
Sobald der Benutzer den erhaltenen PIN-Code eingibt, rufen Sie den /check
-Endpunkt mit der Anforderungs-ID und der PIN auf, um zu bestätigen, dass die PIN korrekt ist.
Verify v2 von Vonage setzt mehr auf asynchrone Workflows über. Webhooks und anpassbarere Verifizierungsworkflows für den Entwickler. Um eine Verifizierung zu starten, benötigen Sie den API-Client, der sich unter dem Namensraum verify2
befindet.
Für eine Verifizierungsanfrage ist ein „Basis“-Kommunikationskanal erforderlich, um den Verifizierungsmodus bereitzustellen. Sie können diese Interaktionen anpassen, indem Sie verschiedene „Workflows“ hinzufügen. Für jeden Workflow-Typ können Sie eine Verify2-Klasse erstellen, die den anfänglichen Workflow für Sie abwickelt. Zum Beispiel:
$ 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 );
Das SMSRequest
Objekt löst die Standardeinstellungen für Sie auf und erstellt ein Standard- workflow
zur Verwendung von SMS. Sie können jedoch mehrere Workflows hinzufügen, die mit Fallback-Logik arbeiten. Wenn Sie beispielsweise eine Verifizierung erstellen möchten, die versucht, einen PIN-Code vom Benutzer zu erhalten. SMS, aber falls es ein Problem mit der SMS-Zustellung gibt, möchten Sie einen Sprach-Fallback hinzufügen: Sie können ihn hinzufügen.
$ 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 );
Dadurch wird der Sprachworkflow zur ursprünglichen SMS-Anfrage hinzugefügt. Die Verifizierungsanforderung versucht, den Prozess in der angegebenen Reihenfolge zu lösen (beginnend mit der Standardeinstellung für den Anforderungstyp).
Die Basisanfragetypen sind wie folgt:
SMSRequest
WhatsAppRequest
WhatsAppInterativeRequest
EmailRequest
VoiceRequest
SilentAuthRequest
Zum Hinzufügen von Workflows können Sie die verfügbaren gültigen Workflows als Konstanten im VerificationWorkflow
Objekt sehen. Für eine bessere Entwicklererfahrung können Sie aufgrund der für das Objekt durchgeführten Validierung keinen ungültigen Workflow erstellen.
Um einen Code zu übermitteln, müssen Sie die Methode aufgrund der Art der API in einen Try/Catch einschließen. Wenn der Code korrekt ist, gibt die Methode einen true
booleschen Wert zurück. Wenn dies fehlschlägt, wird die entsprechende Ausnahme von der API ausgelöst, die abgefangen werden muss.
$ code = ' 1234 ' ;
try {
$ client -> verify2 ()-> check ( $ code );
} catch ( Exception $ e ) {
var_dump ( $ e -> getMessage ())
}
Wenn während eines Verifizierungsworkflows Ereignisse auftreten, werden Ereignisse und Aktualisierungen als Webhooks ausgelöst. Eingehende Serveranfragen, die den PSR-7-Standards entsprechen, können für schönere Interaktionen in ein Webhook-Wertobjekt hydriert werden. Sie können sie auch aus einem Roharray hydrieren. Bei Erfolg erhalten Sie ein Wertobjekt für die Art des Ereignisses/Updates zurück. Mögliche Webhooks sind:
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 ());
Sie können eine Anfrage bei Bedarf abbrechen, bevor der Endbenutzer Maßnahmen ergriffen hat.
$ requestId = ' c11236f4-00bf-4b89-84ba-88b25df97315 ' ;
$ client -> verify2 ()-> cancel ( $ requestId );
Für alle $client->voice()
-Methoden muss der Client mit einem VonageClientCredentialsKeypair
oder einem VonageClientCredentialsContainer
erstellt werden, der die Keypair
Anmeldeinformationen enthält:
$ 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 ));
Sie können einen Anruf mit einem OutboundCall
-Objekt starten:
$ 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 );
Wenn Sie möchten, dass das System zufällig eine FROM-Nummer aus den mit einer Anwendung verknüpften Nummern auswählt, können Sie den zweiten Parameter im Konstruktor von VonageVoiceOutboundCall
weglassen, und das System wählt dann zufällig eine Nummer für Sie aus .
SimSwap verwendet CAMARA-Standards, um zu bestimmen, wie lange sich eine SIM-Karte bereits in einem Mobilfunkgerät befindet. Dies bedeutet, dass der Authentifizierungsmechanismus etwas komplexer ist als bei anderen APIs. Sie benötigen:
Um über eine eigene Abonnentennummer zu verfügen, die bei der Vonage Global Network Platform registriert wurde. Ihre Dashboard-Anwendungs-ID Ihr privater Schlüssel
Für diese API stehen zwei Methoden zur Verfügung: checkSimSwap
und checkSimSwapDate
.
Hier ist ein Beispiel für die Verwendung beider:
$ 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 ' );
Die Nummernüberprüfung verwendet CAMARA-API-Standards und wird verwendet, um festzustellen, ob eine Anfrage gültig ist. Im Gegensatz zu anderen SDKs wird das SDK zwischen dem Start und dem Ende des Prozesses aufgeteilt.
Sie benötigen:
Um über eine eigene Abonnentennummer zu verfügen, die bei der Vonage Global Network Platform registriert wurde. Ihre Dashboard-Anwendungs-ID Ihr privater Schlüssel, heruntergeladen vom Vonage-Dashboard
buildFrontEndUrl()
auf dem Client. Wenn Sie dies aufrufen, müssen Sie die Route angeben, von der Ihre Anwendung einen Rückruf erhalten soll, der einen eindeutigen code
enthält. Damit dies funktioniert, benötigen Sie eine autorisierte Telefonnummer in einem autorisierten Gebiet. Hier ist ein Dummy-Beispiel: 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
extrahiert haben. Die Methode gibt einen booleschen Wert von der API zurück. Hier ist ein Beispiel: $ code = $ request -> get ( ' code ' );
$ result = $ client -> numberVerification ()-> verifyNumber (
' 09947777777 ' ,
$ code
);
if ( $ result ) {
Auth:: login ( $ request -> user ())
}
return redirect ( ' login ' );
}
Diese API wird für In-App-Messaging verwendet und enthält eine Vielzahl von Funktionen und Konzepten. Weitere Informationen finden Sie in der API-Dokumentation
$ 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 );
Vollständige Parameterlisten für NCCO-Aktionen finden Sie in den Voice API Docs.
Jedes dieser Beispiele verwendet die folgende Struktur, um einem Aufruf Aktionen hinzuzufügen:
$ 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 );
Ihre Webhook-URL erhält eine Nutzlast wie diese:
{
"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"
}
Anschließend können Sie die Aufzeichnung wie folgt abrufen und speichern:
$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 );
Unterstützt sowohl die Tastatureingabe als auch die Spracheingabe. Hinweis: Die Eingabeaktion muss einer Aktion folgen, bei der bargeIn
auf true
gesetzt ist
$ 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 );
Die Webhook-URL erhält eine Nutzlast, die die Eingabe des Benutzers mit relativen Vertrauensbewertungen für Spracheingaben enthält.
$ 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 );
Die Webhook-URL erhält eine Nutzlast, wie in der Anfrage angegeben.
Sie können einen Anruf mithilfe eines VonageCallCall
Objekts oder der UUID des Anrufs als Zeichenfolge abrufen:
$ call = $ client -> voice ()-> get ( ' 3fd4d839-493e-4485-b2a5-ace527aacff3 ' );
echo $ call -> getDirection ();
Sie können Anrufe auch mithilfe eines Filters suchen.
$ filter = new Vonage Voice Filter VoiceFilter ();
$ filter -> setStatus ( ' completed ' );
foreach ( $ client -> search ( $ filter ) as $ call ){
echo $ call -> getDirection ();
}
Anwendung sind Konfigurationscontainer. Sie können eine mithilfe einer Array-Struktur erstellen:
$ 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 );
Sie können dem Client auch ein Anwendungsobjekt übergeben:
$ 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 );
Sie können alle Ihre Anwendungen durchlaufen:
foreach ( $ client -> applications ()-> getAll () as $ application ){
echo $ application -> getName () . PHP_EOL ;
}
Oder Sie können eine Anwendung mithilfe einer Zeichenfolgen-UUID oder eines Anwendungsobjekts abrufen.
$ application = $ client -> applications ()-> get ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' );
Sobald Sie ein Anwendungsobjekt haben, können Sie es ändern und speichern.
$ application = $ client -> applications ()-> get ( ' 1a20a124-1775-412b-b623-e6985f4aace0 ' );
$ application -> setName ( ' Updated Application ' );
$ client -> applications ()-> update ( $ application );
Sie können die zu Ihrem Konto gehörenden Nummern auflisten und optional eine Filterung einschließen:
search_pattern
:
0
– die Zahl beginnt mit pattern
1
– die Nummer enthält pattern
2
– die Nummer endet mit 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
– Die Nummer ist einer Bewerbung beigefügtfalse
– Die Nummer ist keiner Bewerbung beigefügt $ 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 );
Sie können nach Nummern suchen, die in einem bestimmten Land zum Kauf verfügbar sind:
$ numbers = $ client -> numbers ()-> searchAvailable ( ' US ' );
Standardmäßig werden nur die ersten 10 Ergebnisse zurückgegeben. Sie können einen zusätzlichen Filter VonageNumbersFilterAvailableNumbers
hinzufügen, um Ihre Suche einzugrenzen.
Um eine Nummer zu kaufen, können Sie einen von der Nummernsuche zurückgegebenen Wert übergeben:
$ numbers = $ client -> numbers ()-> searchAvailable ( ' US ' );
$ number = $ numbers -> current ();
$ client -> numbers ()-> purchase ( $ number -> getMsisdn (), $ number -> getCountry ());
Oder Sie können die Nummer und das Land manuell angeben:
$ client -> numbers ()-> purchase ( ' 14155550100 ' , ' US ' );
Um eine Nummer zu aktualisieren, verwenden Sie numbers()->update
und übergeben Sie die Konfigurationsoptionen, die Sie ändern möchten. Um eine Einstellung zu löschen, übergeben Sie einen leeren Wert.
$ 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 ;
Um eine Nummer zu stornieren, geben Sie den msisdn
ein:
$ client -> numbers ()-> cancel ( ' 447700900002 ' );
Es wird eine API bereitgestellt, mit der Sie Ihre API-Geheimnisse rotieren können. Sie können ein neues Geheimnis erstellen (maximal zwei Geheimnisse) und das vorhandene löschen, sobald alle Anwendungen aktualisiert wurden.
So erhalten Sie eine Liste der Geheimnisse:
$ secretsCollection = $ client -> account ()-> listSecrets ( API_KEY );
/** @var VonageAccountSecret $secret */
foreach ( $ secretsCollection -> getSecrets () as $ secret ) {
echo " ID: " . $ secret -> getId () . " (created " . $ secret -> getCreatedAt () . " ) n" ;
}
Sie können ein neues Geheimnis erstellen (anhand der erstellten Daten können Sie erkennen, welches Geheimnis welches ist):
$ client -> account ()-> createSecret ( API_KEY , ' awes0meNewSekret!!; ' );
Und löschen Sie das alte Geheimnis (jede Anwendung, die diese Anmeldeinformationen noch verwendet, funktioniert nicht mehr):
try {
$ response = $ client -> account ()-> deleteSecret ( API_KEY , ' d0f40c7e-91f2-4fe0-8bc6-8942587b622c ' );
} catch ( Vonage Client Exception Request $ e ) {
echo $ e -> getMessage ();
}
Wenn Sie die Vorwahl eines Landes kennen, das Sie anrufen möchten, können Sie den prefix-pricing
Endpunkt verwenden, um die Kosten für den Anruf dieser Nummer herauszufinden. Jedes Präfix kann mehrere Länder zurückgeben (z. B. 1
gibt US
, CA
und UM
zurück):
$ 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 ;
}
Prüfen Sie, wie viel Guthaben noch auf Ihrem Konto vorhanden ist:
$ response = $ client -> account ()-> getBalance ();
echo round ( $ response -> getBalance (), 2 ) . " EUR n" ;
Überprüfen Sie die aktuellen Einstellungen des Kontos:
$ response = $ client -> account ()-> getConfig ();
print_r ( $ response -> toArray ());
Aktualisieren Sie die Standard-Rückruf-URLs für eingehende SMS-Nachrichten und Zustellbestätigungen:
$ 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 ());
Um die Netzwerk-APIs von Vonage nutzen zu können, müssen Sie im Vonage-Netzwerkregister aktiviert sein
Sobald Sie eine registrierte MSNDIN haben, können Sie SimSwap verwenden.
SimSwap verwendet den Authentifizierungsmechanismus der Global Network Platform, sodass der Autorisierungsablauf etwas anders aussieht als bei anderen API-Clients. Unter der Haube verarbeitet das SDK mehrere Aufrufe für Sie, um ein CAMARA-Standardzugriffstoken zu konfigurieren.
Hier ist ein Beispiel für die Überprüfung, ob eine SIM-Karte kürzlich ausgetauscht wurde:
$ 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 '
}
Und so rufen Sie das Tauschdatum ab:
$ 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;
Mit der Number Insights API kann ein Benutzer überprüfen, ob eine Nummer gültig ist, und mehr über deren Verwendung erfahren.
Sie können entweder die Methoden basic()
oder standard()
verwenden (eine Methode advanced()
ist verfügbar, es wird jedoch empfohlen, die Option „async“ zu verwenden, um erweiterte Informationen zu erhalten), etwa so:
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
}
Die Daten werden im obigen Beispiel in der Variablen $insights
zurückgegeben.
Um erweiterte Einblicke zu erhalten, verwenden Sie die Asynchronfunktion und geben Sie eine URL für den Webhook an, der an Folgendes gesendet werden soll:
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
}
Sehen Sie sich die Dokumentation an, um zu erfahren, was Sie im eingehenden Webhook erwartet, der die von Ihnen angeforderten Daten enthält.
Diese API wird verwendet, um Unterkonten zu erstellen und zu konfigurieren, die mit Ihrem Hauptkonto verknüpft sind, und um Guthaben, Guthaben und gekaufte Nummern zwischen Konten zu übertragen. Die Unterkonten-API ist standardmäßig deaktiviert. Wenn Sie Unterkonten verwenden möchten, wenden Sie sich an den Support, um die API für Ihr Konto zu aktivieren.
$ 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-Versionsstatus | Unterstützt? |
---|---|---|
Konto-API | Allgemeine Verfügbarkeit | |
Warnungs-API | Allgemeine Verfügbarkeit | |
Anwendungs-API | Allgemeine Verfügbarkeit | |
Audit-API | Beta | |
Konversations-API | Beta | |
Versand-API | Beta | |
Externe Konten-API | Beta | |
Medien-API | Beta | |
Meetings-API | Allgemeine Verfügbarkeit | |
Nachrichten-API | Allgemeine Verfügbarkeit | |
Number Insight-API | Allgemeine Verfügbarkeit | |
Nummernverwaltungs-API | Allgemeine Verfügbarkeit | |
Preis-API | Allgemeine Verfügbarkeit | |
ProActive Connect-API | Beta | |
Redact-API | Allgemeine Verfügbarkeit | |
Berichts-API | Beta | |
SMS-API | Allgemeine Verfügbarkeit | |
Unterkonten-API | Allgemeine Verfügbarkeit | |
API überprüfen | Allgemeine Verfügbarkeit | |
API überprüfen (Version 2) | Allgemeine Verfügbarkeit | |
Sprach-API | Allgemeine Verfügbarkeit |
Im Laufe der Zeit entwickeln sich die Vonage-APIs weiter und fügen neue Funktionen hinzu, ändern die Funktionsweise bestehender Funktionen und verwerfen und entfernen ältere Methoden und Funktionen. Damit Entwickler wissen, wann veraltete Änderungen vorgenommen werden, löst das SDK eine E_USER_DEPRECATION
Warnung aus. Diese Warnungen stoppen nicht die Ausführung von Code, können jedoch in Produktionsumgebungen störend sein.
Um dies zu erleichtern, werden diese Hinweise standardmäßig unterdrückt. In der Entwicklung können Sie diese Warnungen aktivieren, indem Sie eine zusätzliche Konfigurationsoption namens show_deprecations
an den VonageClient
Konstruktor übergeben. Wenn Sie diese Option aktivieren, werden alle veralteten Benachrichtigungen angezeigt.
$ client = new Vonage Client (
new Vonage Client Credentials Basic ( API_KEY , API_SECRET ),
[
' show_deprecations ' => true
]
);
Wenn Sie in Produktionsumgebungen eine übermäßige Anzahl von Hinweisen zu veralteten Produkten bemerken, stellen Sie sicher, dass die Konfigurationsoption fehlt oder zumindest auf false
gesetzt ist.
unable to get local issuer certificate
Einige Benutzer haben aufgrund des folgenden Fehlers Probleme beim Senden von Anfragen:
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)'
Dies liegt daran, dass einige PHP-Installationen nicht mit einer Liste vertrauenswürdiger CA-Zertifikate ausgeliefert werden. Dies ist ein Systemkonfigurationsproblem und betrifft weder cURL noch Vonage.
WICHTIG : Im nächsten Absatz stellen wir einen Link zu einem CA-Zertifikatspaket bereit. Vonage übernimmt keine Garantie für die Sicherheit dieses Pakets und Sie sollten es selbst überprüfen, bevor Sie ein CA-Paket auf Ihrem Computer installieren.
Um dieses Problem zu beheben, laden Sie eine Liste vertrauenswürdiger CA-Zertifikate herunter (z. B. das Curl-Paket) und kopieren Sie sie auf Ihren Computer. Sobald dies erledigt ist, bearbeiten Sie php.ini
und legen Sie den Parameter curl.cainfo
fest:
# Linux/MacOS
curl.cainfo = "/etc/pki/tls/cacert.pem"
# Windows
curl.cainfo = "C:phpextrassslcacert.pem"
Wir erlauben die Verwendung jedes HTTPlug-Adapters oder PSR-18-kompatiblen HTTP-Clients, sodass Sie bei Bedarf einen Client mit alternativer Konfiguration erstellen können, beispielsweise um einen lokalen Proxy zu berücksichtigen oder sich um etwas anderes zu kümmern, das für Ihr Setup spezifisch ist.
Hier ist ein Beispiel, das das Standard-Timeout auf 5 Sekunden reduziert, um lange Verzögerungen zu vermeiden, wenn Sie keine Route zu unseren Servern haben:
$ 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 );
Wenn etwas schief geht, erhalten Sie eine Exception
. Die Vonage-Ausnahmeklassen VonageClientExceptionRequest
und VonageClientExceptionServer
unterstützen eine zusätzliche getEntity()
Methode, die Sie zusätzlich zu getCode()
und getMessage()
verwenden können, um mehr darüber herauszufinden, was schief gelaufen ist. Bei der zurückgegebenen Entität handelt es sich in der Regel um ein Objekt im Zusammenhang mit der Operation oder um das Antwortobjekt des API-Aufrufs.
Wenn Sie eine widersprüchliche Paketinstallation haben, die nicht mit unserem empfohlenen guzzlehttp/guzzle
Paket koexistieren kann, können Sie das Paket vonage/client-core
zusammen mit jedem Paket installieren, das die php-http/client-implementation
Anforderung erfüllt.
Optionen finden Sie auf der Packagist-Seite zur Client-Implementierung.
Unsere Client-Bibliothek unterstützt die Protokollierung der Anfrage und Antwort zum Debuggen über PSR-3-kompatible Protokollierungsmechanismen. Wenn die debug
Option an den Client übergeben wird und ein PSR-3-kompatibler Logger in der Service-Factory unseres Clients festgelegt ist, verwenden wir den Logger für Debugging-Zwecke.
$ 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 );
Die Aktivierung der Debugging-Protokollierung kann zur Protokollierung sensibler Informationen führen. AKTIVIEREN SIE DIES IN DER PRODUKTION NICHT
Diese Bibliothek verfügt über eine vollständige Testsuite, die für die Ausführung mit PHPUnit konzipiert ist.
Verwenden Sie zum Ausführen Composer:
composer test
Bitte beachten Sie: Diese Testsuite ist umfangreich und erfordert möglicherweise eine beträchtliche Menge an Speicher zur Ausführung. Wenn unter MacOS oder Linux der Fehler „Zu viele Dateien geöffnet“ auftritt, gibt es einen Hack, um die Anzahl der zulässigen Dateizeiger zu erhöhen. Erhöhen Sie die Anzahl der Dateien, die geöffnet werden können, indem Sie Folgendes in die Befehlszeile eingeben (10240 ist die maximale Anzahl an Zeigern, die MacOS derzeit öffnen kann):
ulimit -n 10240
Diese Bibliothek wird aktiv weiterentwickelt und wir freuen uns, von Ihnen zu hören! Bitte erstellen Sie ein Problem oder öffnen Sie eine Pull-Anfrage mit Ihren Fragen, Kommentaren, Vorschlägen und Ihrem Feedback.