Rumah >pembangunan bahagian belakang >tutorial php >Aplikasi PHP yang dikawal suara dengan API.AI

Aplikasi PHP yang dikawal suara dengan API.AI

Joseph Gordon-Levitt
Joseph Gordon-Levittasal
2025-02-17 10:56:11352semak imbas

Aplikasi PHP yang dikawal suara dengan API.AI

Dalam tutorial ini kita akan melihat API.ai, API yang membolehkan kita membina aplikasi yang memahami bahasa semula jadi, seperti Siri. Ia boleh menerima sama ada teks atau ucapan sebagai input, yang kemudiannya menghidupkan dan mengembalikan rentetan JSON yang boleh ditafsirkan oleh kod yang kami tulis.

Semua fail yang akan kami gunakan dalam tutorial ini boleh didapati dalam repositori GitHub ini.

Aplikasi PHP yang dikawal suara dengan API.AI Takeaways Key

API.AI membolehkan pemaju membuat aplikasi PHP yang memahami input bahasa semulajadi, sama dengan Siri, dengan memproses teks atau ucapan dan mengembalikan data yang boleh diambil tindakan dalam format JSON.
  • Konsep utama dalam API.AI termasuk ejen (aplikasi), entiti (konsep adat seperti mata wang), niat (tindakan berdasarkan arahan pengguna), konteks (konteks ekspresi pengguna), alias (rujukan entiti dalam kod), dan domain ( pakej pengetahuan yang telah ditetapkan).
  • Tutorial menunjukkan membina aplikasi PHP untuk mengambil masa semasa di mana -mana lokasi menggunakan API.AI, API geokoding Google, dan API zon waktu, yang menggambarkan cara mengintegrasikan dan menukar data API ke dalam respons yang boleh digunakan.
  • Ciri-ciri Domain Api.ai, masih dalam beta, memudahkan integrasi dengan menyediakan entiti terbina dalam dan niat yang memerlukan persediaan yang minimum, membolehkan penciptaan aplikasi cepat seperti carian video di YouTube.
  • Tutorial juga meliputi membuat aplikasi PHP penukar mata wang menggunakan API.AI, mempamerkan cara mengendalikan input pengguna, menentukan niat dan entiti, dan mengintegrasikan dengan API luaran seperti mata wang untuk data masa nyata.
  • API.AI menyokong pelbagai platform dan bahasa, menawarkan fleksibiliti untuk pemaju untuk membuat aplikasi yang dibolehkan suara di luar persekitaran web, termasuk aplikasi mudah alih dan desktop.
  • Konsep
  • Sebelum kita beralih ke bahagian praktikal, pentingnya kita mula -mula memahami konsep berikut:

Ejen

- Ejen adalah aplikasi. Kami membuat ejen sebagai cara mengumpulkan entiti dan niat individu.

    Entiti
  • - Entiti adalah konsep tersuai yang ingin kami masukkan ke dalam permohonan kami. Mereka menyediakan cara memberi makna kepada konsep tertentu dengan cara menambah contoh. Entiti sampel akan menjadi 'mata wang'. Kami mentakrifkannya dengan menambah sinonim seperti 'USD', 'Dolar AS', atau hanya 'Dolar'. Setiap sinonim kemudian diberikan kepada nilai rujukan yang boleh digunakan dalam kod. Ia hanya senarai kata -kata yang boleh digunakan untuk merujuk kepada konsep itu. API.ai sudah menyediakan beberapa entiti asas seperti @sys.number, yang merupakan entiti yang merujuk kepada mana -mana nombor, dan @sys.email yang merupakan entiti yang merujuk kepada mana -mana alamat e -mel. Kita boleh menggunakan entiti terbina dalam dengan menentukan @SYS sebagai awalan.

  • Intents - Intents membolehkan kita untuk menentukan tindakan mana yang akan dilaksanakan oleh program bergantung kepada apa yang dikatakan pengguna. Niat sampel akan 'menukar mata wang'. Kami kemudian menyenaraikan semua frasa atau ayat yang mungkin pengguna katakan jika mereka mahu menukar mata wang. Sebagai contoh, pengguna boleh mengatakan 'berapa banyak @sys.number: nombor @currency: daricurrency dalam @currency: tocurrency?'. Dalam contoh ini, kami telah menggunakan 2 entiti: @sys.number dan @currency. Menggunakan kolon selepas entiti membolehkan kita menentukan alias untuk entiti itu. Alias ​​ini kemudiannya boleh digunakan dalam kod kami untuk mendapatkan nilai entiti. Kita perlu memberikan entiti yang sama alias yang berbeza supaya kita dapat merawatnya secara berasingan dalam kod kita. Agar manusia memahami niat di atas, yang perlu kita lakukan ialah menggantikan entiti dengan nilai sebenar. Jadi pengguna mungkin mengatakan 'berapa 900 dolar AS dalam yen Jepun?' untuk tocurrency @currency.

  • Konteks - Konteks mewakili konteks semasa ekspresi pengguna. Sebagai contoh, pengguna mungkin mengatakan 'berapa 55 dolar AS dalam yen Jepun?' Dan kemudian ikuti dengan 'Bagaimana dengan Peso Filipina?'. Api.ai, dalam kes ini, menggunakan apa yang telah dituturkan oleh pengguna, 'berapa 55 dolar AS,' sebagai konteks untuk ekspresi kedua.

  • Aliases - alias - alias menyediakan cara merujuk kepada entiti tertentu dalam kod anda, seperti yang kita lihat sebelum ini dalam penjelasan untuk niat.
  • Domain-Domain adalah pakej pengetahuan yang telah ditetapkan. Kita boleh memikirkannya sebagai koleksi entiti terbina dalam dan niat dalam api.ai. Dalam erti kata lain, mereka adalah helah yang boleh dilakukan oleh API.ai dengan sedikit persediaan atau pengekodan yang diperlukan. Sebagai contoh, pengguna boleh berkata, 'Cari video Pikachu di YouTube.' Dan api.ai sudah tahu bagaimana untuk menghuraikannya dan mengembalikan 'Pikachu' sebagai istilah carian dan 'YouTube' sebagai perkhidmatan. Dari sana, kita hanya boleh menggunakan data yang dikembalikan untuk menavigasi ke YouTube dan mencari 'Pikachu'. Di JavaScript, hanya satu perkara yang menetapkan lokasi.
  • <span>window.location.href = "https://www.youtube.com/results?search_query=pikachu";</span>
    Untuk menggunakan domain untuk ejen anda, pilih ejen anda dari konsol dan kemudian klik pada menu Domain di bahagian atas. Dari sana, membolehkan asas pengetahuan domain dan pemenuhan. Perhatikan bahawa domain sedang dalam beta, tetapi anda sentiasa boleh menggunakan konsol API untuk menguji mereka.

Membolehkan asas pengetahuan domain membolehkan fungsi domain. Membolehkan pemenuhan membolehkan penggunaan perkhidmatan pihak ketiga seperti ceramah kecil dan cuaca. Ini bermakna kita tidak perlu membuat permintaan berasingan kepada API tertentu jika perkhidmatan yang kita perlukan sudah disatukan dengan API.ai.

Mendapatkan masa semasa di tempat tertentu

Sekarang kita mempunyai pemahaman tentang konsep utama, kita boleh meneruskan dengan membina aplikasi mudah. Perkara pertama yang akan kita bina adalah aplikasi untuk mendapatkan masa semasa di tempat tertentu.

Jika anda belum melakukannya, daftar untuk akaun percuma di laman web API.AI, sahkan alamat e-mel anda dan kemudian log masuk / masuk dengan kelayakan anda.

Seterusnya, pergi ke halaman Ejen dan buat ejen baru dengan mengklik butang 'Buat Agen'. Sekali dalam halaman untuk membuat ejen baru, masukkan nama, keterangan, dan bahasa, dan simpan.

Aplikasi PHP yang dikawal suara dengan API.AI

Ini memberi anda kunci langganan, token akses pemaju dan token akses klien. Anda boleh menggunakannya untuk membuat permintaan ke API, sama ada dari klien (penyemak imbas) atau dari pelayan. Satu kelebihan membuat permintaan dari pelayan adalah menjaga kelayakan anda tersembunyi.

Ejen yang kami buat akan menggunakan domain. Ini bermakna kita tidak perlu menubuhkan entiti dan niat. Apa yang kita perlukan adalah sedikit bantuan daripada dua API Google: API Geocoding dan API TimeZone. API Geocoding digunakan untuk menukar lokasi yang kami dapat dari API.AI ke dalam koordinat. Kami kemudian menggunakan koordinat ini untuk menanyakan API zon waktu untuk mendapatkan masa semasa untuk lokasi tersebut. Pergi ke Konsol Google anda dan aktifkan API Zon Time. API Geocoding tidak memerlukan kunci API untuk dibekalkan, jadi kami tidak perlu mengaktifkannya.

Seterusnya, pasang Guzzle. Kami akan menggunakan Guzzle 5 untuk membuat permintaan untuk api.ai.

<span>window.location.href = "https://www.youtube.com/results?search_query=pikachu";</span>
Kemudian, buat fail PHP baru (time.php) dan tambahkan kod berikut supaya kami boleh menggunakan Guzzle dari fail kami.

<span>composer require guzzlehttp/guzzle:~5.0</span>
Selepas itu, tentukan kekunci API anda:

<span><?php
</span><span>require 'vendor/autoload.php';
</span><span>
</span><span>use GuzzleHttp\Client;
</span><span>
</span><span>$client = new Client();</span>
secara semulajadi, dalam aplikasi sebenar, anda mungkin akan menyimpan kelayakan di luar logik aplikasi, dalam beberapa jenis fail konfigurasi tempatan.

kita kini boleh membuat permintaan untuk api.ai. Untuk membuat permintaan, kita perlu lulus dalam token akses pemaju dan kunci langganan sebagai tajuk. Kami kemudian lulus dalam badan permintaan sebagai JSON. Badan permintaan harus mengandungi pertanyaan dan kekunci Lang. Pertanyaan dikemukakan dari pihak klien melalui permintaan pos. Contoh pertanyaan untuk aplikasi ini ialah "pukul berapa di Barcelona, ​​Sepanyol?" atau "Apa masa semasa di Ikebukuro, Jepun?". Sambutan yang dikembalikan adalah rentetan JSON sehingga kami menukarnya ke array dengan memanggil kaedah JSON pada respons $.

<span>$google_api_key = 'YOUR_GOOGLE_API_KEY';
</span><span>$apiai_key = 'YOUR_API_AI_AGENT_DEVELOPER_ACCESS_TOKEN';
</span><span>$apiai_subscription_key = 'YOUR_API_AI_SUBSCRIPTION_KEY';</span>
Berikut adalah tindak balas sampel yang kita dapat apabila kita membuat permintaan di atas:

<span>$query = $_POST['query']; //the users query
</span><span>
</span><span>$response = $client->post('https://api.api.ai/v1/query', array(
</span><span>    'headers' => array(
</span><span>        'Authorization' => "Bearer {$apiai_key}",
</span><span>        'ocp-apim-subscription-key' => $apiai_subscription_key,
</span><span>        'Content-Type' => 'application/json; charset=utf-8'
</span><span>    ),
</span><span>    'json' => array(
</span><span>        "query" => $query,
</span><span>        "lang" => "en"
</span><span>    )
</span><span>));
</span><span>
</span><span>$result = $response->json();</span>
Jika kita mendapat kod status 200, ini bermakna permintaan itu berjaya. Data yang kami perlukan disimpan dalam item hasil. Dalam kes ini, kita hanya perlu mengekstrak lokasi dari parameter. Jika lokasi tidak dikembalikan, maka kami hanya memberitahu pengguna bahawa lokasi tidak dijumpai.

<span>window.location.href = "https://www.youtube.com/results?search_query=pikachu";</span>

Jika lokasi dijumpai, kami membuat permintaan kepada API Google Geocoding untuk menukar lokasi ke koordinat. Jika statusnya OK, ini bermakna kita mendapat hasil. Oleh itu, kita hanya mengeluarkan nilai latitud dan longitud dari hasil pertama.

<span>composer require guzzlehttp/guzzle:~5.0</span>

Seterusnya, kami mendapat timestamp UNIX semasa. Kami lulus nilai ini bersama -sama dengan latitud dan longitud sebagai pertanyaan untuk permintaan kami ke API Google Timezone. Kami kemudian mengekstrak zoneid time yang boleh kita gunakan untuk sementara menetapkan zon waktu menggunakan kaedah date_default_timezone_set. Akhirnya, kami hanya mengeluarkan masa yang diformat kepada pengguna.

<span><?php
</span><span>require 'vendor/autoload.php';
</span><span>
</span><span>use GuzzleHttp\Client;
</span><span>
</span><span>$client = new Client();</span>

mari kita teruskan ke sisi klien. Buat fail index.html dengan kod berikut:

<span>$google_api_key = 'YOUR_GOOGLE_API_KEY';
</span><span>$apiai_key = 'YOUR_API_AI_AGENT_DEVELOPER_ACCESS_TOKEN';
</span><span>$apiai_subscription_key = 'YOUR_API_AI_SUBSCRIPTION_KEY';</span>

Kami menggunakan jQuery (untuk pengendalian acara) dan responsif-voice.js. Perpustakaan suara responsif membolehkan kita menukar teks ke ucapan. Kami menggunakannya untuk bercakap hasil yang kami dapat dari pelayan.

Kami juga mempunyai pengiktirafan ucapan, yang kami gunakan untuk menukar ucapan kepada teks. Ini menggunakan API Ucapan Web. Malangnya, pada masa penulisan ia masih hanya disokong sebahagiannya pada beberapa pelayar, jadi tutorial ini akan menganggap anda menggunakan Chrome (yang menyokongnya).

mari kita jelaskan fail di atas. Pertama adalah pemboleh ubah global yang akan kami gunakan untuk menyimpan objek pengenalan ucapan semasa.

<span>$query = $_POST['query']; //the users query
</span><span>
</span><span>$response = $client->post('https://api.api.ai/v1/query', array(
</span><span>    'headers' => array(
</span><span>        'Authorization' => "Bearer {$apiai_key}",
</span><span>        'ocp-apim-subscription-key' => $apiai_subscription_key,
</span><span>        'Content-Type' => 'application/json; charset=utf-8'
</span><span>    ),
</span><span>    'json' => array(
</span><span>        "query" => $query,
</span><span>        "lang" => "en"
</span><span>    )
</span><span>));
</span><span>
</span><span>$result = $response->json();</span>

Seterusnya ialah kaedah StarTrecognition. Apa yang dilakukannya ialah mewujudkan objek pengiktirafan ucapan baru. Ini akan meminta pengguna menggunakan mikrofon. Seterusnya, kami menetapkan bahasa kepada bahasa Inggeris dan memulakan pengiktirafan pertuturan. Kami kemudian mendengar acara Onstart. Apabila peristiwa ini dicetuskan, ini bermakna pengiktirafan ucapan telah bermula. Kami memanggil kaedah UpdateRec apabila ini berlaku, yang mengubah teks butang untuk memulakan dan menghentikan pengiktirafan pertuturan. Kami juga mendengar acara OnResult yang dicetuskan apabila pengguna telah berhenti bercakap selama beberapa saat. Ini mengandungi hasil pengiktirafan pertuturan. Kita perlu gelung melalui hasil dan menggunakan item transkrip dalam setiap satu untuk mendapatkan teks yang kita perlukan. Setelah itu selesai, kami memanggil kaedah SetInput yang mengubah nilai medan teks pertanyaan dan memanggil kaedah hantar yang menyerahkan pertanyaan kepada pelayan. Seterusnya, kami memanggil kaedah StopRecognition untuk menghentikan pengiktirafan pertuturan dan mengemas kini UI. Kami juga perlu melakukan perkara yang sama dalam acara Onend.

Array
(
    [id] => eb69f468-6e1a-41c9-883d-6ac7c71cd187
    1739117986 => 2015-05-16T09:19:47.519Z
    [result] => Array
        (
            [source] => domains
            [resolvedQuery] => What's the current time in Barcelona Spain?
            [speech] => 
            [action] => clock.time
            [parameters] => Array
                (
                    [location] => Barcelona Spain
                )

            [metadata] => Array
                (
                    [inputContexts] => Array
                        (
                        )

                    [outputContexts] => Array
                        (
                        )

                    [contexts] => Array
                        (
                        )

                )

        )

    [status] => Array
        (
            [code] => 200
            [errorType] => success
        )

)

Berikut adalah kaedah UpdateRec.

<span>if(!empty($result['result']) && !empty($result['result']['parameters']['location'])){
</span><span>    $location = $result['result']['parameters']['location'];
</span><span>
</span><span>}else{
</span><span>    echo "Sorry, I could not find that location.";
</span><span>}</span>

kaedah setInput.

<span>$place_response = $client->get("http://maps.googleapis.com/maps/api/geocode/json?address={$location}&sensor=false");
</span><span>
</span><span>$place_result = $place_response->json();
</span><span>
</span><span>if($place_result['status'] == 'OK'){
</span><span>
</span><span>    $lat = $place_result['results'][0]['geometry']['location']['lat'];
</span><span>    $lng = $place_result['results'][0]['geometry']['location']['lng'];
</span><span>}</span>

kaedah stoprecognition.

<span>$timestamp = time(); //get the current unix timestamp
</span><span>
</span><span>$time_response = $client->get("https://maps.googleapis.com/maps/api/timezone/json?location={$lat},{$lng}&timestamp={$timestamp}&key={$google_api_key}");
</span><span>
</span><span>$time_result = $time_response->json();
</span><span>
</span><span>if($time_result['status'] == 'OK'){
</span><span>    $timezone = $time_result['timeZoneId'];
</span><span>
</span><span>    date_default_timezone_set($timezone);
</span><span>
</span><span>    echo 'It's currently ' . date('l, F j, Y g:i A') . ' in ' . $location;
</span><span>}</span>

Selain itu, kami juga mempunyai kaedah switchRecognition yang dipanggil setiap kali pengguna mengklik butang untuk mencetuskan pengiktirafan ucapan untuk memulakan atau berhenti.

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span><span>    <meta charset="UTF-8">
</span><span>    <title>time</title>
</span><span>    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
</span><span>    <script src="responsive-voice.js"></script>
</span><span></head>
</span><span><body>
</span><span>    <div>
</span><span>        <input type="text" id="query" name="query"> <button id="rec">Speak</button>
</span><span>    </div>
</span><span>    <div id="response"></div>
</span><span>    <script src="speech-recognition.js"></script>
</span><span>    <script src="main.js"></script>
</span><span></body>
</span><span></html></span>

Apabila pengguna menekan kekunci Enter pada medan pertanyaan, ini juga mencetuskan pertanyaan untuk dihantar ke pelayan.

<span>window.location.href = "https://www.youtube.com/results?search_query=pikachu";</span>

Kebanyakan kod dalam fail pengiktirafan ucapan.js adalah dari intipati ini yang menunjukkan contoh cara menggunakan api.ai di sisi klien.

Seterusnya ialah fail main.js di mana kami menghantar pertanyaan kami ke pelayan. Sebaik sahaja kita mendapat respons, kita menggunakan suara responsif untuk bercakap dan juga mengeluarkannya dalam bekas tindak balas. Dengan cara itu, kita boleh menyemak respons secara visual.

<span>composer require guzzlehttp/guzzle:~5.0</span>

Penukar mata wang

aplikasi seterusnya yang akan kami bina membolehkan pengguna menukar jumlah tertentu dari satu mata wang ke yang lain.

Pertama, buat ejen baru dan panggilnya CurrencyConverter.

Aplikasi PHP yang dikawal suara dengan API.AI

Di bawah ejen itu, buat entiti baru dan panggil mata wangnya. Ini akan mewakili mata wang yang berbeza yang boleh kita tukar. Tentukan beberapa mata wang yang boleh kita gunakan untuk ujian dan klik pada 'Simpan'.

Aplikasi PHP yang dikawal suara dengan API.AI seterusnya membuat niat baru dan panggilnya ConvertMoney.

Dari tangkapan skrin di atas, anda dapat melihat bahawa kami telah menambah perkara berikut di bawah bahagian 'Pengguna Says': Aplikasi PHP yang dikawal suara dengan API.AI

bahagian 'pengguna mengatakan' adalah di mana kita menentukan contoh apa yang pengguna boleh katakan untuk mencetuskan niat khusus ini. Apa yang kita lakukan di sini adalah menggunakan entiti sebagai pengganti untuk nilai sebenar yang boleh digunakan pengguna. @Sys.Number boleh merujuk kepada mana -mana nombor. @Currency boleh merujuk kepada mana -mana mata wang yang kami tambahkan sebelum ini apabila kami mencipta entiti mata wang. Menggunakan kolon selepas entiti membolehkan kami memberikan alias kepadanya. Alias ​​ini kemudiannya boleh digunakan untuk mendapatkan nilai yang digunakan oleh pengguna dalam kod.

<span><?php
</span><span>require 'vendor/autoload.php';
</span><span>
</span><span>use GuzzleHttp\Client;
</span><span>
</span><span>$client = new Client();</span>
Bahagian 'Tindakan' adalah di mana kita menentukan tindakan atau kaedah yang kita mahu laksanakan jika niat khusus ini digunakan. Dalam kes ini kita tidak akan menentukan apa -apa kerana kita hanya membuat aplikasi yang hanya melakukan satu perkara.

bahagian 'pemenuhan' adalah di mana kita menentukan templat untuk ucapan yang kita mahu output sebaik sahaja niat digunakan. Sebagai contoh, kita boleh meletakkan perkara berikut:

Ini kemudiannya boleh didapati pada item pertuturan dalam hasil yang kita dapat. Dari sana, kita boleh melakukan penggantian rentetan untuk menggantikan pembolehubah tersebut dengan nilai sebenar yang kita dapat. Tetapi mari kita biarkan ia kosong untuk aplikasi ini.

<span>$google_api_key = 'YOUR_GOOGLE_API_KEY';
</span><span>$apiai_key = 'YOUR_API_AI_AGENT_DEVELOPER_ACCESS_TOKEN';
</span><span>$apiai_subscription_key = 'YOUR_API_AI_SUBSCRIPTION_KEY';</span>
Sebaik sahaja anda selesai, klik pada butang 'Simpan' untuk menyimpan niat.

Sekarang kami bersedia meneruskan kod tersebut. Buat fail Exchange.php dalam direktori kerja anda kemudian, tambahkan kod berikut:

<span>window.location.href = "https://www.youtube.com/results?search_query=pikachu";</span>

Seperti yang anda lihat dari kod di atas, ia pada dasarnya sama seperti yang kami lakukan sebelum ini dalam aplikasi sebelumnya. Hanya kali ini kami telah menambah pembolehubah $ currencylayer_apikey $. Ini menyimpan kekunci API yang kami dapat dari FirmanLayer.com, API yang membolehkan kami mendapatkan kadar pertukaran semasa dari satu mata wang ke yang lain. Jika anda ingin mengikuti, teruskan dan mendaftar untuk kunci API.

Seterusnya, kami periksa sama ada terdapat keputusan dan mengeluarkan data yang kami perlukan. Dalam kes ini, kita perlu mendapatkan mata wang yang pengguna ingin menukar, mata wang untuk menukarnya dan kemudian jumlahnya.

<span>composer require guzzlehttp/guzzle:~5.0</span>

Kami kemudian membuat permintaan ke API dan mengeluarkan kadar pertukaran dari hasilnya:

<span><?php
</span><span>require 'vendor/autoload.php';
</span><span>
</span><span>use GuzzleHttp\Client;
</span><span>
</span><span>$client = new Client();</span>

Hasil yang kita dapat dari API kelihatan seperti ini:

<span>$google_api_key = 'YOUR_GOOGLE_API_KEY';
</span><span>$apiai_key = 'YOUR_API_AI_AGENT_DEVELOPER_ACCESS_TOKEN';
</span><span>$apiai_subscription_key = 'YOUR_API_AI_SUBSCRIPTION_KEY';</span>

Sekarang kita mempunyai kadar pertukaran semasa, yang perlu kita lakukan sekarang adalah membiak kadar dengan jumlah yang diberikan pengguna dan kemudian mengeluarkan hasilnya.

<span>$query = $_POST['query']; //the users query
</span><span>
</span><span>$response = $client->post('https://api.api.ai/v1/query', array(
</span><span>    'headers' => array(
</span><span>        'Authorization' => "Bearer {$apiai_key}",
</span><span>        'ocp-apim-subscription-key' => $apiai_subscription_key,
</span><span>        'Content-Type' => 'application/json; charset=utf-8'
</span><span>    ),
</span><span>    'json' => array(
</span><span>        "query" => $query,
</span><span>        "lang" => "en"
</span><span>    )
</span><span>));
</span><span>
</span><span>$result = $response->json();</span>

Di sisi pelanggan, kami masih menggunakan HTML dan fail yang sama yang kami gunakan sebelum ini pada aplikasi pertama kami. Anda boleh meneruskan dan meletakkan fail yang sama dalam direktori kerja anda jika anda mengikuti.

Array
(
    [id] => eb69f468-6e1a-41c9-883d-6ac7c71cd187
    1739117986 => 2015-05-16T09:19:47.519Z
    [result] => Array
        (
            [source] => domains
            [resolvedQuery] => What's the current time in Barcelona Spain?
            [speech] => 
            [action] => clock.time
            [parameters] => Array
                (
                    [location] => Barcelona Spain
                )

            [metadata] => Array
                (
                    [inputContexts] => Array
                        (
                        )

                    [outputContexts] => Array
                        (
                        )

                    [contexts] => Array
                        (
                        )

                )

        )

    [status] => Array
        (
            [code] => 200
            [errorType] => success
        )

)

Satu -satunya perbezaan ialah URL yang kami hantar permintaan. Tunjuk ke mana-mana nilai pertukaran anda.

<span>if(!empty($result['result']) && !empty($result['result']['parameters']['location'])){
</span><span>    $location = $result['result']['parameters']['location'];
</span><span>
</span><span>}else{
</span><span>    echo "Sorry, I could not find that location.";
</span><span>}</span>
Kesimpulan

Dalam tutorial ini, kami telah belajar bagaimana menggunakan API.AI untuk membuat aplikasi PHP yang dibolehkan suara. Sokongan penyemak imbas masih cukup terhad kerana API Ucapan Web masih tidak dilaksanakan secara meluas. Tetapi API.AI menyokong platform lain selain dari web. Android, Cordova, .net, iOS adalah beberapa contoh. Ini bermakna kita boleh menggunakan API.ai tanpa bimbang tentang sokongan pada platform ini. Pastikan anda menyemak dokumen mereka jika anda ingin mengetahui lebih lanjut. Fail -fail yang telah kami gunakan dalam tutorial ini boleh didapati di repositori GitHub ini.

Soalan Lazim (Soalan Lazim) pada Apl PHP yang dikawal suara dengan API.AI

Bagaimana saya boleh mengintegrasikan API.AI dengan PHP untuk pengiktirafan suara? Pertama, anda perlu membuat ejen baru di API.AI. Ejen ini akan bertanggungjawab untuk memahami input suara pengguna dan menukarkannya ke dalam data yang boleh diambil tindakan. Selepas membuat ejen, anda perlu melatihnya dengan frasa dan tindak balas. Sebaik sahaja ejen dilatih, anda boleh menggunakan API.AI PHP SDK untuk mengintegrasikan ejen ke dalam aplikasi PHP anda. SDK menyediakan kaedah untuk menghantar data suara kepada ejen dan menerima data yang diproses kembali.

Apakah prasyarat untuk membina aplikasi PHP yang dikawal suara dengan api.ai? Pengaturcaraan yang berorientasikan. Anda juga perlu mempunyai pengetahuan kerja API.AI dan bagaimana ia berfungsi. Di samping itu, anda perlu mempunyai pelayan di mana anda boleh menjadi tuan rumah aplikasi PHP anda. Akhir sekali, anda perlu mempunyai API.ai PHP SDK yang dipasang pada pelayan anda. . Beberapa alternatif yang popular untuk API.AI termasuk IBM Watson, Microsoft Azure Cognitive Services, dan Google Cloud Speech-to-text. API ini juga menyediakan SDK PHP yang boleh anda gunakan untuk mengintegrasikannya ke dalam aplikasi PHP anda. Dalam aplikasi PHP anda melibatkan latihan ejen API.AI anda dengan lebih banyak frasa dan respons. Lebih banyak data ejen itu, semakin baik ia dapat memahami dan memproses input suara. Anda juga boleh menggunakan keupayaan pembelajaran mesin ejen untuk terus meningkatkan prestasinya dari masa ke masa. Oleh itu, anda boleh melatih ejen anda untuk memahami dan bertindak balas terhadap input suara dalam bahasa yang berbeza. Apabila menghantar data suara ke ejen, anda boleh menentukan bahasa dalam permintaan. Ejen itu kemudiannya akan memproses input suara berdasarkan bahasa yang ditentukan. AI untuk teks-ke-ucapan dalam aplikasi PHP anda. API.ai menyediakan kaedah untuk menukar teks ke dalam ucapan. Anda boleh menggunakan kaedah ini untuk membuat aplikasi anda bercakap respons atau arahan kepada pengguna. melibatkan menyulitkan data sebelum menghantarnya ke API.ai. Anda boleh menggunakan fungsi penyulitan terbina dalam PHP untuk menyulitkan data. Di samping itu, anda harus menggunakan HTTPS untuk semua komunikasi antara aplikasi anda dan API.ai untuk mengelakkan pemintasan data. Gunakan API.AI untuk aplikasi web yang dikawal suara. API.AI PHP SDK boleh digunakan dalam mana -mana aplikasi PHP, termasuk aplikasi web. Anda boleh menggunakan JavaScript untuk menangkap input suara pengguna dalam penyemak imbas dan kemudian hantar ke backend php anda untuk diproses. Boleh menguji keupayaan pengiktirafan suara aplikasi PHP anda dengan membuat satu set frasa dan tindak balas ujian. Anda kemudian boleh menggunakan ujian ini untuk memeriksa sama ada aplikasi dengan betul memahami dan memproses input suara.

Bolehkah saya menggunakan api.ai untuk aplikasi mudah alih yang dikawal suara? Walau bagaimanapun, anda perlu menggunakan SDK API.AI untuk platform mudah alih tertentu (Android atau iOS) dan bukannya PHP SDK. SDK mudah alih menyediakan kaedah untuk menangkap input suara pengguna dan menghantarnya ke API.AI untuk diproses.

Atas ialah kandungan terperinci Aplikasi PHP yang dikawal suara dengan API.AI. 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