cari
Rumahpembangunan bahagian belakangtutorial phpAplikasi PHP yang dikawal suara dengan API.AI

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></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></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>
</span><span>
</span><span>
</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>
</span><span>
</span><span>    <div>
<span>        <input type="text" id="query" name="query"> <button id="rec">Speak</button>
</span><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>
</span><span></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></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></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.

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
Apakah kelebihan menggunakan pangkalan data untuk menyimpan sesi?Apakah kelebihan menggunakan pangkalan data untuk menyimpan sesi?Apr 24, 2025 am 12:16 AM

Kelebihan utama menggunakan sesi penyimpanan pangkalan data termasuk kegigihan, skalabilitas, dan keselamatan. 1. Kegigihan: Walaupun pelayan dimulakan semula, data sesi tidak dapat berubah. 2. Skalabiliti: Berkenaan dengan sistem yang diedarkan, memastikan data sesi disegerakkan di antara pelbagai pelayan. 3. Keselamatan: Pangkalan data menyediakan storan yang disulitkan untuk melindungi maklumat sensitif.

Bagaimana anda melaksanakan pengendalian sesi tersuai di PHP?Bagaimana anda melaksanakan pengendalian sesi tersuai di PHP?Apr 24, 2025 am 12:16 AM

Melaksanakan pemprosesan sesi tersuai dalam PHP boleh dilakukan dengan melaksanakan antara muka sessionHandlerInterface. Langkah -langkah khusus termasuk: 1) mewujudkan kelas yang melaksanakan sessionHandlerInterface, seperti CustomSessionHandler; 2) kaedah penulisan semula dalam antara muka (seperti terbuka, rapat, membaca, menulis, memusnahkan, gc) untuk menentukan kitaran hayat dan kaedah penyimpanan data sesi; 3) Daftar pemproses sesi tersuai dalam skrip PHP dan mulakan sesi. Ini membolehkan data disimpan dalam media seperti MySQL dan REDIS untuk meningkatkan prestasi, keselamatan dan skalabiliti.

Apakah ID Sesi?Apakah ID Sesi?Apr 24, 2025 am 12:13 AM

SesionID adalah mekanisme yang digunakan dalam aplikasi web untuk mengesan status sesi pengguna. 1. Ia adalah rentetan yang dijana secara rawak yang digunakan untuk mengekalkan maklumat identiti pengguna semasa pelbagai interaksi antara pengguna dan pelayan. 2. Pelayan menjana dan menghantarnya kepada klien melalui kuki atau parameter URL untuk membantu mengenal pasti dan mengaitkan permintaan ini dalam pelbagai permintaan pengguna. 3. Generasi biasanya menggunakan algoritma rawak untuk memastikan keunikan dan ketidakpastian. 4. Dalam pembangunan sebenar, pangkalan data dalam memori seperti REDIS boleh digunakan untuk menyimpan data sesi untuk meningkatkan prestasi dan keselamatan.

Bagaimanakah anda mengendalikan sesi dalam persekitaran tanpa kerakyatan (mis., API)?Bagaimanakah anda mengendalikan sesi dalam persekitaran tanpa kerakyatan (mis., API)?Apr 24, 2025 am 12:12 AM

Menguruskan sesi dalam persekitaran tanpa kerakyatan seperti API boleh dicapai dengan menggunakan JWT atau cookies. 1. JWT sesuai untuk ketiadaan dan skalabilitas, tetapi ia adalah saiz yang besar ketika datang ke data besar. 2.Cookies lebih tradisional dan mudah dilaksanakan, tetapi mereka perlu dikonfigurasikan dengan berhati -hati untuk memastikan keselamatan.

Bagaimanakah anda dapat melindungi daripada serangan skrip lintas tapak (XSS) yang berkaitan dengan sesi?Bagaimanakah anda dapat melindungi daripada serangan skrip lintas tapak (XSS) yang berkaitan dengan sesi?Apr 23, 2025 am 12:16 AM

Untuk melindungi permohonan dari serangan XSS yang berkaitan dengan sesi, langkah-langkah berikut diperlukan: 1. Tetapkan bendera httponly dan selamat untuk melindungi kuki sesi. 2. Kod eksport untuk semua input pengguna. 3. Melaksanakan Dasar Keselamatan Kandungan (CSP) untuk mengehadkan sumber skrip. Melalui dasar-dasar ini, serangan XSS yang berkaitan dengan sesi dapat dilindungi dengan berkesan dan data pengguna dapat dipastikan.

Bagaimana anda boleh mengoptimumkan prestasi sesi PHP?Bagaimana anda boleh mengoptimumkan prestasi sesi PHP?Apr 23, 2025 am 12:13 AM

Kaedah untuk mengoptimumkan prestasi sesi PHP termasuk: 1. Mula sesi kelewatan, 2. Gunakan pangkalan data untuk menyimpan sesi, 3. Data sesi kompres, 4. Mengurus kitaran hayat sesi, dan 5. Melaksanakan perkongsian sesi. Strategi ini dapat meningkatkan kecekapan aplikasi dalam persekitaran konkurensi yang tinggi.

Apakah tetapan konfigurasi sesi.gc_maxlifetime?Apakah tetapan konfigurasi sesi.gc_maxlifetime?Apr 23, 2025 am 12:10 AM

Thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata, setInseconds.1) it'sconfiguredinphp.iniorviaini_set (). 2) abalanceisneededtoavoidperformanceissuesandunexpectedlogouts.3) php'sgarbageCollectionisprobabilistic, influedbygc_probabi

Bagaimana anda mengkonfigurasi nama sesi dalam php?Bagaimana anda mengkonfigurasi nama sesi dalam php?Apr 23, 2025 am 12:08 AM

Dalam PHP, anda boleh menggunakan fungsi session_name () untuk mengkonfigurasi nama sesi. Langkah -langkah tertentu adalah seperti berikut: 1. Gunakan fungsi session_name () untuk menetapkan nama sesi, seperti session_name ("my_session"). 2. Selepas menetapkan nama sesi, hubungi session_start () untuk memulakan sesi. Mengkonfigurasi nama sesi boleh mengelakkan konflik data sesi antara pelbagai aplikasi dan meningkatkan keselamatan, tetapi memberi perhatian kepada keunikan, keselamatan, panjang dan penetapan masa sesi.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)