Cette application météo Laravel, initialement conçue pour les appels vocaux, prend désormais en charge la communication SMS. Cette amélioration consiste à ajouter des itinéraires, à modifier la couche de service et à créer un contrôleur SMS pour gérer les messages texte entrants.
ajouts d'itinéraire:
Le fichier routes/web.php
est mis à jour pour inclure un groupe d'itinéraire SMS:
Route::group(['prefix' => 'sms', 'middleware' => 'twilio'], function () { Route::post('weather', 'SmsController@showWeather')->name('weather'); });
Cette route /sms/weather
gère tous les messages SMS entrants, tirant parti des demandes de publication de Twilio.
Modification de la couche de service:
La méthode app/Services/WeatherService.php
du fichier getWeather
est révisée pour s'adapter aux SMS:
public function getWeather($zip, $dayName, $forSms = false) { // ... (Existing code to retrieve weather data remains unchanged) ... $weather = $day->name; $weather .= ' the ' . $tsObj->format('jS') . ': '; $response = new Twiml(); if ($forSms) { $remainingChars = 140 - strlen($weather); // ... (Condensed weather forecast for SMS, limited to 140 characters) ... $response->message($weather); } else { // ... (Existing code for voice responses remains unchanged) ... } return $response; }
Le changement de clé est l'ajout du paramètre $forSms
. Si cela est vrai, la prévision est raccourcie pour s'adapter dans les limites de caractère SMS.
Contrôleur SMS:
Un nouveau SmsController.php
est créé dans app/Http/Controllers
:
<?php namespace App\Http\Controllers; use App\Services\WeatherService; use Illuminate\Http\Request; use Twilio\Twiml; class SmsController extends Controller { // ... (Constructor and dependencies remain the same) ... public function showWeather(Request $request) { $parts = $this->parseBody($request); switch ($parts['command']) { case 'zipcode': // ... (Handle zipcode input) ... break; case 'day': // ... (Handle day of week input) ... break; case 'credits': // ... (Handle credits request) ... break; default: // ... (Handle default/unknown input) ... break; } return $response; } private function parseBody($request) { // ... (Parses the SMS body to determine user intent) ... } }
La méthode showWeather
de ce contrôleur utilise parseBody
pour interpréter le message SMS et les appels getWeather
avec des paramètres appropriés. parseBody
identifie les codes postaux, les jours de la semaine et les demandes de crédit.
CONFIGURATION TWILIO:
Mettez à jour les paramètres de votre numéro de téléphone Twilio pour pointer le point Web SMS au point de terminaison de votre application (en utilisant votre URL Ngrok). /sms/weather
Utilisation de l'application:
Envoyez un SMS avec un code postal à votre numéro Twilio pour recevoir les prévisions météorologiques. Les messages ultérieurs peuvent spécifier un jour de la semaine ou demander des crédits.
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!