Rumah >pembangunan bahagian belakang >tutorial php >Helo, Laravel? Berkomunikasi dengan PHP melalui SMS!

Helo, Laravel? Berkomunikasi dengan PHP melalui SMS!

William Shakespeare
William Shakespeareasal
2025-02-09 11:21:14550semak imbas

aplikasi cuaca Laravel ini, yang pada mulanya direka untuk panggilan suara, kini menyokong komunikasi SMS. Peningkatan ini melibatkan menambah laluan, mengubahsuai lapisan perkhidmatan, dan membuat pengawal SMS untuk mengendalikan mesej teks yang masuk.

Hello, Laravel? Communicating with PHP through SMS!

penambahan laluan:

fail

dikemas kini untuk memasukkan kumpulan laluan SMS: routes/web.php

<code class="language-php">Route::group(['prefix' => 'sms', 'middleware' => 'twilio'], function () {
    Route::post('weather', 'SmsController@showWeather')->name('weather');
});</code>
Laluan ini mengendalikan semua mesej SMS yang masuk, memanfaatkan permintaan pos Twilio.

/sms/weather

Pengubahsuaian lapisan perkhidmatan:

kaedah

fail disemak semula untuk menampung SMS: app/Services/WeatherService.php getWeather

Perubahan utama ialah penambahan parameter
<code class="language-php">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;
}</code>
. Jika benar, ramalan dipendekkan agar sesuai dengan had aksara SMS.

$forSms

SMS Controller:

A BARU dicipta dalam

:

SmsController.php app/Http/Controllers Kaedah Pengawal

ini menggunakan
<code class="language-php"><?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) ...
    }
}</code>
untuk menafsirkan mesej SMS dan panggilan

dengan parameter yang sesuai. showWeather Mengenal pasti kod zip, hari dalam seminggu, dan permintaan kredit. parseBody getWeather parseBody Konfigurasi Twilio:

Kemas kini tetapan nombor telefon Twilio anda untuk menunjuk webhook SMS ke titik akhir aplikasi anda (menggunakan URL NGROK anda).

/sms/weather

Penggunaan aplikasi:

Hello, Laravel? Communicating with PHP through SMS!

Hantar SMS dengan kod zip ke nombor Twilio anda untuk menerima ramalan cuaca. Mesej berikutnya boleh menentukan hari dalam seminggu atau meminta kredit.

Hello, Laravel? Communicating with PHP through SMS! Aplikasi Laravel yang dipertingkatkan ini menunjukkan cara yang mantap dan fleksibel untuk mengendalikan kedua -dua suara dan interaksi SMS menggunakan Twilio. Kod ini memberikan contoh yang jelas tentang cara memperluaskan fungsi untuk menyokong saluran komunikasi baru. Ingatlah untuk menggantikan komen pemegang tempat dengan kod sebenar dari respons asal. Hello, Laravel? Communicating with PHP through SMS!

Atas ialah kandungan terperinci Helo, Laravel? Berkomunikasi dengan PHP melalui SMS!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn