>

Livezilla chatbot 스크립트를 사용하여 로컬 API에 저장 한 REST API와 통신하려고 할 때 문제가 있습니다. Livezilla chatbot API 페이지와 매우 유사한 코드 스 니펫을 사용하여 수정했지만 오류가 발생했습니다.

27.02.19 11:34:11 ::1 ERR# 129 Error connecting USER API, invalid response: http://localhost/livezilla/programytalk.php(
Notice: Trying to get property 'answer' of non-object in C:\xampp\htdocs\livezilla\programytalk.php on line 11 ) IN LINE 0

programytalk.php의 코드는 다음과 같습니다 :

<?php
$requestobj = json_decode($_POST["livezilla_user_api_request"]);
$responseNode = array();
$responseNode["ResponseTo"] = "";
$responseNode["Id"] = rand(1111111,9999999);
$responseNode["SearchKB"] = false;
$url = "http://localhost:8989/api/rest/v1.0/ask? question=".rawurlencode($requestobj->Value)."&userid=".$requestobj- 
>VisitorId;
$sdata = json_decode(file_get_contents($url));
$responseNode["Value"] = $sdata->answer;
if(!empty($responseNode["Value"]))
            echo json_encode($responseNode);
?>

이것은 API가 응답하는 JSON 형식입니다 :

[{"response":{"answer":"Good morning.","question":"hello world","userid":"1234567890"}},200]

  • 답변 # 1

    그 API 응답으로 읽을 필요가 없습니다

    $responseNode["Value"] = $sdata->answer;
    
    

    그 대신 읽어야합니다

    $responseNode["Value"] = $sdata[0]->response->answer;
    
    

    응답이 응답 아래에 중첩되어 있기 때문에 ...

    힌트 : 그냥해라

    $data = json_decode('[{"response":{"answer":"Good morning.","question":"hello world","userid":"1234567890"}},200]');
    print_r($data);
    
    

    출력은 다음과 같습니다 :

    Array
    (
        [0] => stdClass Object
            (
                [response] => stdClass Object
                    (
                        [answer] => Good morning.
                        [question] => hello world
                        [userid] => 1234567890
                    )
            )
        [1] => 200
    )
    
    

  • 답변 # 2

    이 작업을 수행하십시오;

    <?php
    $requestobj = json_decode($_POST["livezilla_user_api_request"]);
    $responseNode = array();
    $responseNode["ResponseTo"] = "";
    $responseNode["Id"] = rand(1111111,9999999);
    $responseNode["SearchKB"] = false;
    $url = "http://localhost:8989/api/rest/v1.0/ask? question=".rawurlencode($requestobj->Value)."&userid=".$requestobj- 
    >VisitorId;
    $sdata = json_decode(file_get_contents($url), true);
    $responseNode["Value"] = $sdata->answer;
    if(!empty($responseNode["Value"]))
                echo json_encode($responseNode, true);
    ?>
    
    

관련 자료

  • 이전 tensorflow - 모델 표준 저장
  • 다음 python - 셀러리 작업 맞춤 추적 방법