https://a.storyblok.com/f/270183/1368x665/ba7e0e0e15/26jun_dev-blog_symfony-ai_r1.jpg

Symfony AI: Wie viele Prompts zum Senden einer RCS-Nachricht?

Zuletzt aktualisiert am June 9, 2026

Lesedauer: 4 Minuten

Nennen Sie mich "KI-vorsichtig/vorsichtig". Als jemand, der Software-Entwicklung "auf manuelle Weise" gemacht hat und Design Patterns sowohl in Laravel als auch in Symfony gelernt hat, habe ich bereits geschrieben über den alarmierend schnellen Fortschritt, den die KI im Alltag der PHP-Entwickler macht. Also dachte ich mir, was wäre, wenn ich versuchen würde, eine Laravel-App von Grund auf zu "coden", die RCS-Nachrichten versendet? Wie viele Eingabeaufforderungen würde ich brauchen, um eine Symfony-App dazu zu bringen, meine Vonage-Anmeldedaten zu nehmen und mir eine RCS-Testnachricht zu senden? Lasst es uns herausfinden!

Voraussetzungen

Sobald Sie sich angemeldet haben, müssen Sie eine Anwendung erstellen und den automatisch heruntergeladenen private.key in das Stammverzeichnis des Projektcodes einfügen.

  • Um eine Anwendung zu erstellen, gehen Sie auf die Seite Erstellen einer Anwendung auf dem Vonage Dashboard und legen Sie einen Namen für Ihre Anwendung fest.

  • Wenn Sie eine API verwenden möchten, die Webhooks nutzt, benötigen Sie einen privaten Schlüssel. Klicken Sie auf "Generate public and private key", der Download sollte automatisch starten. Bewahren Sie ihn sicher auf; dieser Schlüssel kann bei Verlust nicht erneut heruntergeladen werden. Er folgt der Namenskonvention privat_<Ihre App-ID>.key. Dieser Schlüssel kann nun zur Authentifizierung von API-Aufrufen verwendet werden. Hinweis: Ihr Schlüssel funktioniert erst, wenn Ihre Anwendung gespeichert ist.

  • Wählen Sie die benötigten Funktionen (z. B. Voice, Nachrichten, RTC usw.) und stellen Sie die erforderlichen Webhooks bereit (z. B. Ereignis-URLs, Antwort-URLs oder URLs für eingehende Nachrichten). Diese werden im Lernprogramm beschrieben.

  • Zum Speichern und Bereitstellen klicken Sie auf "Neue Anwendung generieren", um die Einrichtung abzuschließen. Ihre Anwendung ist nun bereit für die Verwendung mit Vonage-APIs.

Die Installation

Eine Sache, für die ich meine kostbaren Token nicht verschwenden werde, ist die Installation von Symfony. Ein höflicher Blick in die Dokumentation reicht mir völlig aus. Mit Composer erstelle ich eine Skeleton-App:

composer create-project symfony/skeleton:"8.0.*" blog-symfony-ai-rcs

Als Nächstes müssen wir das Vonage PHP SDK installieren. Ich habe die Installation des Symfony-HTTP-Clients mit eingeschlossen, da Sie das PHP-SDK nicht installieren können, ohne einen PSR-7-kompatiblen HTTP-Client zu haben.

composer require symfony/http-client

composer require vonage/client-sdk

Jetzt starten wir die Uhr. Die Anforderungen sind folgende:

  • Ein Befehl namens SendRcsMessageCommand der ein -text Argument

  • Wenn es ausgeführt und mit einer Nachricht versehen wird, nimmt es eine Application ID und private.key von Ihrem Vonage Account (und konfiguriert mit Symfony), startet den Vonage PHP SDK Client und sendet eine RCS-Nachricht an eine vorkonfigurierte Gerätenummer

Erstellen Sie den Befehl

Aufforderung:

create me a command called SendRcsMessageCommand that takes text as an argument 

Los geht's!

Screenshot of the command code with correct code importsImports all look present and correctUnd was bleibt uns?

Screenshot showing the execute method written according to Symfony standardsA healthy looking Symfony CommandSieht für mich gut aus und entspricht den Symfony-Konventionen. Schritt eins: vollständig und ohne Probleme.

Fügen Sie die Application ID undprivat.schlüssel Pfad zur Symfony-Konfiguration, die über eine .env-Datei eingeholt wird.

Aufforderung:

add VONAGE_APPLICATION_ID and a private.key path to the .env file and configure it in Symfony

Sollte ziemlich einfach sein, obwohl, weil dies ist ab jetzt Symfony Konventionen (die Konfiguration bearbeiten) verwenden, bemerkte ich es durch eine deutlich höhere Menge von Token verbrannt.

Wenn ich einen Beispielschlüssel und -geheimnis hinzufüge und den Befehl anweise, es zu drucken, werden wir sehen, ob es gut aussieht. Zuerst muss ich die Parameter automatisch einbinden:

public function __construct(

   #[Autowire('%vonage.application_id%')] private readonly string $applicationId,

   #[Autowire('%vonage.private_key_path%')] private readonly string $privateKeyPath,

) {

   parent::__construct();

}

Jetzt füge ich den Code hinzu, um die Container-Variablen in der execute() Methode.:

// Check that the API Key and Secret have been configured corrects

$output->writeln('Checking autowired auth variables...');

$output->writeln('Application ID: ' . $this->applicationId);

$output->writeln('private key path: ' . $this->privateKeyPath);

Führen Sie den Befehl aus und geben Sie einige Testwerte in die Datei .env Datei ein, um die Ausgabe zu erhalten:

symfony console app:send-rcs-message "hello world"

Sending RCS message: hello world

Checking autowired auth variables...

Application ID: test-key

private key path: %kernel.project_dir%/private.key

Sehr gut. Zwei Aufforderungen bis jetzt.

In der Datei services.yml kann ich sehen, dass die Datei so bearbeitet wurde, dass sie diese beiden Parameter enthält:

parameters:

   vonage.application_id: '%env(VONAGE_APPLICATION_ID)%'

   vonage.private_key_path: '%kernel.project_dir%/private.key'

Konfigurieren Sie das Vonage PHP SDK und senden Sie eine RCS-Nachricht an eine Dummy-Nummer.

Meine Neugierde ist jetzt geweckt, denn was wird der Agent tun? Wird er die Vonage\Client in einfaches PHP ein, oder wird er versuchen, den Service Container von Symfony zu verwenden? Letzteres bezweifle ich, es sei denn, ich sage es ihm ausdrücklich.

Aufforderung:

add the vonage php sdk to the command and configure it with the api key and secret from the service configuration, then get it to send an RCS text message to a dummy number with the text parameter as the message

Ich möchte, dass dies im Idealfall der letzte Schritt ist. Das macht 3, also kann es das tun? Es hat die Befehlsfunktion execute() Methode des Befehls in die folgende:

protected function execute(

   InputInterface $input,

   OutputInterface $output,

): int {

   $vonage = new Client(new Keypair(file_get_contents($this->privateKeyPath), $this->applicationId));

   $message = new RcsText(

       to: '447738066610',

       from: 'VonageRCSDemo-DevRel',

       message: $input->getArgument('text'),

   );

   $response = $vonage->messages()->send($message);

   $output->writeln(sprintf('RCS message sent. Message UUID: %s', $response['message_uuid']));

   return Command::SUCCESS;

}

Nun, ich würde sagen, vom Code her sieht das absolut perfekt aus. Was passiert also, wenn ich meine Anmeldedaten in die .env Datei einfüge und den Befehl ausführe? Das ist der letzte Test:

symfony console app:send-rcs-message "Hello from Symfony and Vonage!"

Und hier ist die Ausgabe im Terminal:

RCS message sent. Message UUID: 056c407b-b1db-4b9c-a4d4-322d2095b894

DING! Mein Telefon summt.

Screenshot of my Android phone with an RCS message delivered by my Symfony appAn alive and well RCS on my deviceDas war's. Im Vergleich zu meinem letzten Versuch, eine Laravel-Anwendung mit Cursor und Claude zu schreiben, ist die endgültige Zahl drei Prompts, was irgendwie unglaublich ist. Ja, es wird nur eine RCS-Nachricht gesendet, aber es gibt viel Spielraum für komplexere Aktionen, wie z. B. die Nutzung von Webhooks oder das Abfeuern von Ereignissen, um andere Arten von RCS-Nachrichten zu erstellen, wie z. B. eine Aufforderung oder einen Standort, angesichts der Geschwindigkeit, mit der Entwickler Prototypen erstellen können.

Denken Sie hier an die goldene Regel: KI-Werkzeuge sind dazu da verstärken und beschleunigen Ihren Code mit Symfony. Ich bin zwar überrascht, dass es so wenige Aufforderungen braucht, um eine Aufgabe wie diese zu erledigen, aber bedenken Sie, dass dieses neue Set von Entwickler-Tools Ihr Verständnis für den Code selbst nicht ersetzen kann. Aus diesem Grund empfehle ich dringend, den Einstieg in Symfony mit SymfonyCastszu beginnen, und insbesondere die Inhalte des verstorbenen und leider vermissten Ryan Weaver. Wir sind schließlich Menschen, die Software für Menschen machen, und KI kann diese Tatsache nicht ersetzen.

Haben Sie eine Frage oder möchten Sie uns mitteilen, was Sie gerade bauen?

Bleiben Sie auf dem Laufenden und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden.

Teilen Sie:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeSenior PHP Entwickler Advocate

Als ausgebildeter Schauspieler mit einer Dissertation in Standup-Comedy bin ich über die Meetup-Szene zur PHP-Entwicklung gekommen. Man findet mich, wenn ich über Technik spreche oder schreibe, oder wenn ich seltsame Platten aus meiner Vinylsammlung spiele oder kaufe.