https://d226lax1qjow5r.cloudfront.net/blog/blogposts/send-whatsapp-messages-in-laravel-with-vonages-native-sdk/whatsapp_laravel_v2.png

Senden von WhatsApp-Nachrichten in Laravel mit dem nativen SDK von Vonage

Zuletzt aktualisiert am February 7, 2023

Lesedauer: 10 Minuten

In Ihren Laravel Applications möchten Sie vielleicht Ihre Nutzer über WhatsApp kontaktieren. Sei es, um Benachrichtigungen an Ihre Nutzer zu senden oder vielleicht Verkaufsförderungsmaßnahmen an potenzielle Kunden zu senden. Die Möglichkeit, Nachrichten direkt an die Telefone Ihrer Nutzer zu senden und mit ihnen zu kommunizieren, kann ein äußerst leistungsfähiges Werkzeug in Ihrem Arsenal sein.

Allerdings kann die direkte Kommunikation mit der WhatsApp-API manchmal ein wenig überwältigend sein. Daher können wir stattdessen Vonage verwenden, um den Versand der Nachrichten und die Kommunikation mit der WhatsApp-API zu übernehmen.

Vonage ist eine Cloud-Kommunikationsplattform, die eine Vielzahl von APIs bereitstellt, mit denen Sie mit Ihren Nutzern über SMS, Voice, WhatsApp und mehr kommunizieren können. Es bietet eine bequeme Möglichkeit, WhatsApp-Nachrichten zu senden, ohne sich um die zugrunde liegende Komplexität der WhatsApp-API kümmern zu müssen. Es hat auch ein Laravel-Paket das die Integration in Ihre Laravel-Anwendung sehr einfach macht.

In diesem Tutorial zeigen wir Ihnen, wie Sie mit Laravel und Vonage WhatsApp-Nachrichten versenden können.

Zu beachtende Dinge

Bei der Arbeit mit WhatsApp gibt es einige Dinge zu beachten, welche Arten von Nachrichten Sie senden können und wann Sie sie senden können.

Vorlagen für Nachrichten

Um zu versuchen, die Menge an Spam zu reduzieren, die Unternehmen an Personen senden können, kann ein Unternehmen (wie Sie selbst) nur eine Unterhaltung mit einem Nutzer beginnen, indem es eine "Nachrichtenvorlage" (MTM) sendet. MTMs sind vorab genehmigte Nachrichten, die Sie im WhatsApp Business Manager erstellen müssen und die von WhatsApp genehmigt werden müssen, bevor Sie sie verwenden können.

Die MTMs unterstützen Parameter, mit denen Sie die Nachrichten, die Sie an die Benutzer senden, individuell gestalten können. Sie können zum Beispiel ein MTM mit folgendem Inhalt erstellen:

Hello {{1}}. Your order {{2}} has been shipped.

Wenn wir "John" als ersten Parameter und "1234" als zweiten Parameter verwenden, würde die Nachricht, die an den Benutzer gesendet wird, lauten:

Hello John. Your order 1234 has been shipped.

Wenn der Nutzer Ihnen jedoch zuerst eine Nachricht sendet, können Sie ihm innerhalb eines Zeitfensters von 24 Stunden antworten, ohne ein MTM verwenden zu müssen.

24-Stunden-Kundenbetreuungsfenster

WhatsApp hat ein Konzept für ein 24-Stunden-Kundenbetreuungsfenster. Innerhalb dieses Zeitfensters kann ein Unternehmen einem Endnutzer frei eine Nachricht schicken, ohne dass eine Vorlage für die Nachricht erforderlich ist.

Das 24-Stunden-Fenster kann auf zwei verschiedene Arten gestartet werden:

  • Der Benutzer antwortet auf ein vom Unternehmen gesendetes MTM.

  • Der Benutzer sendet eine Nachricht an das Unternehmen.

Wie Sie sehen, erfordert das 24-Stunden-Fenster die Beteiligung des Nutzers an der Unterhaltung.

Wenn innerhalb des 24-Stunden-Fensters keine Nachricht gesendet wird, läuft das Fenster ab und Sie müssen ein neues Fenster beginnen.

API-Schlüssel und Verbindung zu WhatsApp

Bevor wir mit dem Code beginnen, müssen Sie zunächst sicherstellen, dass Sie einen aktiven WhatsApp Business Account mit einer konfigurierten Telefonnummer haben.

Außerdem benötigen Sie einen Account bei Vonage. Wenn Sie noch keines haben, können Sie sich für einen Account anmelden hier. Sobald Sie ein Konto haben, müssen Sie Ihren API-Schlüssel und Ihr Geheimnis von Ihrem Vonage-Dashboard abrufen.

Sobald Sie dies getan haben, können Sie auf die Seite "Externe Accounts" in Ihrem Vonage Dashboard wechseln. Hier können Sie Ihren WhatsApp Account mit Ihrem Vonage Account verbinden. Befolgen Sie die Schritte, um Ihre Accounts miteinander zu verknüpfen.

Danach sollte Ihr Vonage Account nun mit WhatsApp verbunden und einsatzbereit sein.

Wenn Sie Probleme beim Einrichten Ihres Vonage Accounts oder beim Verbinden Ihres WhatsApp Business Accounts haben, sollten Sie sich die Vonage-Dokumentation für weitere Informationen.

Installation und Konfiguration

Jetzt, da unser Vonage Account einsatzbereit ist, können wir damit beginnen, unsere Laravel-Anwendung einzurichten, um ihn zu nutzen. Um zu beginnen, müssen wir das Vonage-Laravel-Paket mit Composer installieren. Dazu führen Sie den folgenden Befehl im Stammverzeichnis Ihres Projekts aus:

composer require vonage/vonage-laravel

Sobald das Paket installiert ist, können wir die Konfigurationsdatei für das Paket veröffentlichen. Damit können wir unseren Vonage-API-Schlüssel und das Geheimnis konfigurieren. Dazu führen Sie den folgenden Befehl aus:

php artisan vendor:publish --provider="Vonage\Laravel\ServiceProvider"

Für dieses Tutorial gehe ich davon aus, dass jedes Mal, wenn wir eine WhatsApp-Nachricht senden wollen, dieselbe Telefonnummer verwendet wird, also legen wir unsere WhatsApp-Telefonnummer in meiner .env Datei. Dazu müssen wir auch ein neues Konfigurationsfeld hinzufügen, damit wir die Telefonnummer im Code unserer Anwendung abrufen können. Ich platziere dieses neue Konfigurationsfeld in meiner config/services.php Datei:

return [

	// ...
    
	'vonage' => [
    	'whatsapp' => [
        	'from_phone_number' => env('WHATSAPP_PHONE_NUMBER'),
    	],
	],

	// ...

];

Diesen Wert können wir dann im Code unserer Anwendung abrufen, indem wir config('services.vonage.whatsapp.from_phone_number').

Nachdem wir nun unsere neuen Konfigurationsfelder erstellt haben, können wir unsere Telefonnummer, den API-Schlüssel und das API-Geheimnis zu unserer .env Datei hinzufügen:

VONAGE_KEY=YOUR-API-KEY-HERE VONAGE_SECRET=YOUR-VONAGE-SECRET-HERE VONAGE_WHATSAPP_FROM=YOUR-WHATSAPP-PHONE-NUMBER

Das war's! Wir sind bereit, WhatsApp-Nachrichten zu versenden.

Versenden von WhatsApp-Nachrichten mit Vonage

Nun, da unsere Anwendung fertig ist, können wir damit beginnen, WhatsApp-Nachrichten an unsere Nutzer zu senden.

Versenden von WhatsApp-Nachrichtenvorlagen (MTM)

Wie bereits erwähnt, muss ein Unternehmen, das ein neues 24-Stunden-Fenster öffnen und ein Gespräch mit dem Nutzer beginnen möchte, zunächst ein MTM senden.

Um ein MTM zu versenden, müssen Sie Ihren "Vorlagennamensraum" im WhatsApp Business Manager finden. Diesen benötigen Sie, um zu erkennen, welche Vorlage Sie senden möchten, da derselbe Vorlagenname von anderen Personen auf der ganzen Welt verwendet werden könnte.

Wenn Sie Ihre Nachricht senden, müssen Sie den Vorlagennamensraum mit dem Vorlagennamen verketten, wobei Sie : als Trennzeichen. Nehmen wir zum Beispiel an, Ihr Vorlagennamensraum lautet abc123 und der Name Ihrer Vorlage lautet sample_issue_resolution. Dann würden Sie diese beiden Werte miteinander verketten und erhalten abc123:sample_issue_resolution als Ihren vollständigen Vorlagennamen, den Sie an Vonage weitergeben.

Nehmen wir als Beispiel eine der Muster-Nachrichtenvorlagen, die WhatsApp für uns bereitstellt. Die Vorlage heißt sample_issue_resolution und hat die folgende Struktur:

Hi {{1}}, were we able to solve the issue that you were facing?

Diese Vorlage ermöglicht es uns, den Namen des Benutzers als einzigen Parameter zu übergeben. Wenn wir also diese Nachricht an den Benutzer senden wollten, müssten wir Folgendes tun:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppTemplate;
use Vonage\Messages\MessageObjects\TemplateObject;

$toNumber = '447123456789';
$locale = 'en_US';
$templateName = 'abc_123:sample_issue_resolution';
$templateParams = [
	'John',
];

$whatsAppMessage = new WhatsAppTemplate(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	templateObject: new TemplateObject(
    	name: $templateName,
    	parameters: $templateParams,
	),
	locale: $locale,
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung dieses Codes würde dazu führen, dass eine Nachricht an die Telefonnummer gesendet wird +447123456789 die wie folgt aussieht:

Hi John, were we able to solve the issue that you were facing?

Wie Sie aus dem Codebeispiel ersehen können, müssen wir zunächst ein neues WhatsAppTemplate Objekt erstellen und angeben:

  • Die Rufnummer, an die die Vorlage gesendet wird.

  • Die Telefonnummer, von der die Vorlage gesendet wird.

  • Das Vorlagenobjekt, das den Vorlagennamen und die Parameter enthält.

  • Das Gebietsschema der Vorlage.

Sobald wir unser WhatsAppTemplate Objekt erstellt haben, können wir es mit dem Vonage Client.

Sie haben vielleicht auch bemerkt, dass wir einen locale Parameter an das WhatsAppTemplate Objekt übergeben. Das liegt daran, dass WhatsApp es erlaubt, Nachrichtenvorlagen in mehreren Sprachen zu erstellen. Wenn wir zum Beispiel dieselbe Vorlage in Englisch und Spanisch hätten, könnten wir die englische Version senden, indem wir en_US als Gebietsschema (wie im obigen Beispiel) und die spanische Version durch die Übergabe von es als Gebietsschema. Wenn wir also es als Gebietsschema angeben, würde der Benutzer stattdessen die folgende Nachricht erhalten:

Hola, Ashley. ¿Pudiste solucionar el problema que tenías?

Dies ist eine wirklich leistungsstarke Funktion, die hilfreich sein kann, wenn Sie internationale Kommunikation über Ihre Anwendung anbieten müssen. Zum Beispiel können Sie damit den Support für Ihre Nutzer in mehreren Sprachen anbieten.

Versenden von WhatsApp-Textnachrichten

Vorausgesetzt, Sie befinden sich innerhalb Ihres 24-Stunden-Kundenbetreuungszeitfensters, können Sie auch Freiform-Textnachrichten von Ihrer Laravel-Anwendung aus versenden. Hierfür müssen Sie ein neues WhatsAppText Objekt erstellen und es an die Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppText;

$toNumber = '447123456789';
$message = 'Hello, this is a test message.';

$whatsAppMessage = new WhatsAppText(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	text: $message,
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung des obigen Codes würde dazu führen, dass eine WhatsApp-Nachricht an die Telefonnummer gesendet wird +447123456789 die wie folgt aussieht:

Hello, this is a test message.

Versenden von WhatsApp-Bildnachrichten

Mit Vonage können Sie auch Bilder an Ihre Benutzer senden. Hierfür müssen Sie ein neues WhatsAppImage Objekt erstellen und es an die Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppImage;
use Vonage\Messages\MessageObjects\ImageObject;

$toNumber = '447123456789';
$imageUrl = 'https://example.com/image.png';
$caption = 'This is an example image.';

$whatsAppMessage = new WhatsAppImage(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	image: new ImageObject(
    	url: $imageUrl,
    	caption: $caption,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung des folgenden Codes würde dazu führen, dass eine WhatsApp-Nachricht an die Telefonnummer gesendet wird +447123456789 gesendet wird, die ein Bild mit der Beschriftung "Dies ist ein Beispielbild." enthält.

Versenden von WhatsApp Video-Nachrichten

Sie können auch Videonachrichten von Ihrer Laravel-Anwendung aus versenden. Hierfür müssen Sie ein neues WhatsAppVideo Objekt erstellen und es an die Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppVideo;
use Vonage\Messages\MessageObjects\VideoObject;

$toNumber = '447123456789';
$videoUrl = 'https://example.com/video.mp4';

$whatsAppMessage = new WhatsAppVideo(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	videoObject: new VideoObject(
    	url: $videoUrl,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung des folgenden Codes würde dazu führen, dass eine WhatsApp-Nachricht an die Telefonnummer gesendet wird +447123456789 die ein Video enthält.

Versenden von WhatsApp-Audio-Nachrichten

Mit Vonage können Sie auch Audionachrichten von Ihrer Laravel-Anwendung aus versenden. Hierfür müssen Sie ein neues WhatsAppAudio Objekt erstellen und es an die Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppAudio;
use Vonage\Messages\MessageObjects\AudioObject;

$toNumber = '447123456789';
$audioUrl = 'https://example.com/audio.mp3';

$whatsAppMessage = new WhatsAppAudio(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	audioObject: new AudioObject(
    	url: $audioUrl,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung des folgenden Codes würde dazu führen, dass eine WhatsApp-Nachricht an die Telefonnummer gesendet wird +447123456789 die eine Audiodatei enthält.

Versenden von WhatsApp Datei-Nachrichten

Möglicherweise möchten Sie auch Dateien aus Ihrer Laravel-Anwendung an Ihre Benutzer senden. Hierfür müssen Sie ein neues WhatsAppFile Objekt erstellen und es an die Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppFile;
use Vonage\Messages\MessageObjects\FileObject;

$toNumber = '447123456789';
$fileUrl = 'https://example.com/file.pdf';
$caption = 'This is an example file.';

$whatsAppMessage = new WhatsAppFile(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	fileObject: new FileObject(
    	url: $fileUrl,
    	caption: $caption,
	),
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung des folgenden Codes würde dazu führen, dass eine WhatsApp-Nachricht an die Telefonnummer gesendet wird +447123456789 gesendet wird, die eine Datei mit der Beschriftung "Dies ist eine Beispieldatei" enthält.

Versenden von WhatsApp-Standortnachrichten

In einigen Szenarien (z. B. bei der Bereitstellung von Wegbeschreibungen) möchten Sie vielleicht auch Standorte an Ihre Benutzer senden. Hierfür müssen Sie ein neues WhatsAppLocation Objekt erstellen und es an die Vonage Client:

use Vonage\Client;
use Vonage\Messages\Channel\WhatsApp\WhatsAppCustom;

$toNumber = '447123456789';
$longitude = -40.34764;
$latitude = -74.18875;
$name = Vonage HQ';
$address = '23 Main Street, Holmdel, NJ 07733';

$whatsAppMessage = new WhatsAppCustom(
	to: $toNumber,
	from: config('services.vonage.whatsapp.from_phone_number'),
	custom: [
    	'type' => 'location',
    	'location' => [
        	'longitude' => $longitude,
        	'latitude' => $latitude,
        	'name' => $name,
        	'address' => $address,
    	],
	],
);

app(Client::class)
	->messages()
	->send($whatsAppMessage);

Die Ausführung des folgenden Codes würde dazu führen, dass eine WhatsApp-Nachricht an eine Telefonnummer gesendet wird +447123456789 die einen Standort mit dem Namen "Vonage HQ" und der Adresse "23 Main Street, Holmdel, NJ 07733" enthält.

Schlussfolgerung

Dieser Artikel sollte Ihnen hoffentlich einen Einblick gegeben haben, wie Sie verschiedene Arten von WhatsApp-Nachrichten aus Ihrer Laravel-Anwendung mit Vonage versenden können. Sie sollten auch ein Verständnis für die WhatsApp-Nachrichtenvorlagen und das 24-Stunden-Fenster haben, das Sie zum Senden von Nachrichten haben.

Teilen Sie:

https://a.storyblok.com/f/270183/400x267/746f012da9/ashley-allen.png
Ashley AllenGastautor

Ashley ist eine freiberufliche Laravel-Webentwicklerin, die es liebt, zu Open-Source-Projekten beizutragen, spannende Systeme zu entwickeln und anderen dabei zu helfen, etwas über Webentwicklung zu lernen.