Maison >développement back-end >tutoriel php >Bonjour, Laravel? Communiquer avec PHP via des appels téléphoniques!

Bonjour, Laravel? Communiquer avec PHP via des appels téléphoniques!

William Shakespeare
William Shakespeareoriginal
2025-02-09 11:43:10720parcourir

Cet article montre la construction d'une application téléphonique de prévision météorologique à l'aide de Twilio et Laravel. Cette série en deux parties se concentre sur l'interaction vocale dans la première partie, avec la fonctionnalité SMS à ajouter dans la deuxième partie.

Hello, Laravel? Communicating with PHP through Phone Calls!

Les utilisateurs appellent un numéro Twilio, entrez un code postal et recevez les prévisions météorologiques actuelles. Un menu vocal permet la récupération des prévisions pour des jours spécifiques de la semaine.

Caractéristiques de clé:

  • exploite le SDK PHP de Twilio et le client HTTP de Buzzle pour une interaction API efficace au sein de Laravel.
  • utilise des routes de post HTTP dans Laravel pour gérer les demandes d'entrée et de prévision des utilisateurs.
  • implémente le système de mise en cache de Laravel pour optimiser les performances et minimiser les appels d'API.
  • comprend des middleware personnalisés pour la validation de la demande sécurisée, en contournant le CSRF pour Twilio webhooks.

Prérequis:

  • Homestead s'est amélioré (ou un environnement de développement comparable). Voir le point de point lié et les ressources Vagrant pour une aide à la configuration. Un livre d'environnement de développement PHP est également lié à l'apprentissage plus approfondi.
  • Configuration et dépendances du projet Laravel:
<code class="language-bash">cd ~/Code
composer create-project --prefer-dist laravel/laravel Laravel 5.4.*
cd Laravel
composer require "twilio/sdk:^5.7"
composer require "guzzlehttp/guzzle:~6.0"</code>

Étapes de développement:

  1. Routes (routes/web.php): Définir les routes pour les interactions vocales:
<code class="language-php">Route::group(['prefix' => 'voice', 'middleware' => 'twilio'], function () {
    Route::post('enterZipcode', 'VoiceController@showEnterZipcode')->name('enter-zip');
    Route::post('zipcodeWeather', 'VoiceController@showZipcodeWeather')->name('zip-weather');
    Route::post('dayWeather', 'VoiceController@showDayWeather')->name('day-weather');
    Route::post('credits', 'VoiceController@showCredits')->name('credits');
});</code>
  1. Couche de service (app/Services/WeatherService.php): Créez une classe WeatherService pour encapsuler la logique métier. Cette classe gère la récupération des données météorologiques de l'API du National Weather Service (https://api.weather.gov), en utilisant les données géographiques de Geonames. La mise en cache est mise en œuvre pour améliorer les performances. Les méthodes clés sont getWeather, retrieveNwsData, getPoint, getTimeZone, getTimestamp, et getCredits.

  2. Contrôleur (app/Http/Controllers/VoiceController.php): Le VoiceController gère les interactions utilisateur, en utilisant le WeatherService pour gérer la récupération des données météorologiques. Les méthodes incluent showEnterZipcode, showZipcodeWeather, showDayWeather et showCredits. Ces méthodes renvoient les réponses Twilio Twiml guidant l'utilisateur à travers l'appel.

  3. middleware (app/Http/Middleware/TwilioRequestValidator.php): Un middleware personnalisé valide les demandes entrantes de Twilio à l'aide du Twilio RequestValidator, garantissant que seules les demandes légitimes sont traitées. La protection CSRF est désactivée pour Twilio Webhooks.

  4. Variables d'environnement (.env): Configurez votre jeton Twilio Auth (TWILIO_APP_TOKEN), et Geonames Username (GEONAMES_USERNAME).

  5. ngrok: Utilisez Ngrok pour exposer votre serveur de développement local à Internet pour les appels Twilio Webhook. N'oubliez pas d'utiliser l'option -host-header pour gérer correctement l'en-tête hôte.

  6. Configuration Twilio: Obtenez un numéro de téléphone Twilio avec des capacités de voix et de SMS. Configurez les URL WebHook dans les paramètres de votre compte Twilio pour pointer vers vos routes exposées à Ngrok.

Considérations de production: Le passage aux points de terminaison HTTPS est recommandé pour les déploiements de production.

Conclusion: Cet article détaille la création d'une application météorologique vocale fonctionnelle. La deuxième partie le prolongera pour inclure la fonctionnalité SMS. Le référentiel GitHub (lien non fourni dans le texte d'origine) contiendra le code complet.

FAQ (à partir du texte original, reformaté):

La section FAQ du texte d'origine est étendue et couvre divers aspects de l'intégration de Laravel avec différents services de communication (Twilio, Plivo, Sinch). Étant donné que la question ne demande que la réécriture du texte fourni, j'ai omis cette section par concision. Cependant, si vous souhaitez que cette section incluse, faites-le moi savoir.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn