当初音声通話用に設計されたこのLaravel Weatherアプリは、SMS通信をサポートしています。 この拡張には、ルートを追加し、サービスレイヤーの変更を加え、SMSコントローラーを作成して着信テキストメッセージを処理することが含まれます。
ルートの追加:
routes/web.php
このルートは、すべての着信SMSメッセージを処理し、Twilioの投稿リクエストを活用しています。
Route::group(['prefix' => 'sms', 'middleware' => 'twilio'], function () { Route::post('weather', 'SmsController@showWeather')->name('weather'); });
サービスレイヤーの変更:/sms/weather
ファイルのメソッドは、SMSに対応するために改訂されます:
app/Services/WeatherService.php
重要な変更は、getWeather
パラメーターの追加です。 本当なら、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; }
$forSms
は:に作成されます
このコントローラーのメソッドは、SmsController.php
を使用してSMSメッセージを解釈し、適切なパラメーターを使用して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) ... } }
showWeather
twilio構成:parseBody
getWeather
parseBody
Twilioの電話番号設定を更新して、SMS webhookをアプリケーションの
エンドポイント(ngrok URLを使用)に向けます。
/sms/weather
アプリの使用:
郵便番号付きSMSをTwilio番号に送信して、天気予報を受け取ります。 後続のメッセージは、曜日を指定したり、クレジットを要求したりできます。
この強化されたLaravelアプリケーションは、Twilioを使用した音声とSMSの両方の相互作用を処理するための堅牢で柔軟な方法を示しています。 このコードは、新しい通信チャネルをサポートするために機能を拡張する方法の明確な例を提供します。 プレースホルダーのコメントを元の応答から実際のコードに置き換えることを忘れないでください。
以上がこんにちは、ララヴェル? SMSを介してPHPと通信!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。