簡體   English   中英

如何在PHP中處理IBM Watson異步回調事件

[英]How to handle IBM Watson asynchronous callback events in php

我正在嘗試使異步回調適用於IBM Watson語音文本。

我得到了卷曲功能的工作

curl -X POST -u "c94c7025-09f5-4cee-94dd-8f73348b60d8":"4TOriExZooKh" \
--header "Content-Type: audio/wav" \
--data-binary @uploads/001528fe-9545-4c3f-9d0d-aec4cd61caee.wav \
"https://stream.watsonplatform.net/speech-to-text/api/v1/recognitions?callback_url=http://34.234.215.13/callback.php&model=en-US_NarrowbandModel&profanity_filter=false&events=recognitions.completed_with_results&user_token=audio&results_ttl=10"

據我了解,結果或通知應以POST形式發送到回調URL

https://console.bluemix.net/docs/services/speech-to-text/async.html#create

上面的代碼應該將完成的結果發送到callback.php

callback.php
<?php
header('Content-Type:text/plain');
echo $_GET["challenge_string"];
foreach ($_POST as $key => $value)
    error_log($key . "--" . $value);

回聲用於URL注冊,然后用於通過POST發送的任何數據,我會將其傳遞給foreach循環。

但是轉換完成后,我什么也沒有得到。

access log
[14/Oct/2017:00:22:39 +0000] "POST /callback.php HTTP/1.1" 200 166 "-" "Jersey/2.22.1 (Apache HttpClient 4.5)"

error log
[:error] [pid 2046] [client 169.48.114.147:54645] PHP Notice:  Undefined index: challenge_string in /var/www/html/callback.php on line 10

我不明白什么是錯的? 當我進行同步調用(即一個接一個的POST)時,我能夠使它工作。

我相信您沒有將回調注冊(列入白名單),請參閱文檔中的“注冊回調URL”部分: https : //console.bluemix.net/docs/services/speech-to-text/async.html#異步的

您可以通過調用POST /v1/register_callback方法來注冊回調URL。 一旦注冊了回調URL,就可以使用它來接收無限數量的作業的通知。 注冊過程包括四個步驟:...

我想出了如何處理POST請求。 這對我來說是全新的,對此一無所知。

callback.php
<?php
$request_body = file_get_contents('php://input');
$json = json_decode($request_body);

有一兩件事我想指出,任何一個感興趣的是,這里提到這個輸出將有額外的信息

https://console.bluemix.net/docs/services/speech-to-text/async.html#job

如果你想只提取結果到JSON字符串中的數據庫來存儲或其他地方,你可以添加使用這一行

json_encode($json->results[0])

希望這對任何人都有幫助。

有關PHP處理主體中POST數據的更多信息,請參見此處
如何在php中獲取POST正文?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM