Чатбот с использованием диалогового потока и Java. Кажется, что веб-крючок не работает - PullRequest
0 голосов
/ 13 апреля 2020

Итак, я попытался создать чат-бота, используя диалоговый поток и клиентскую библиотеку Java. Для этого я использовал диалоговое окноflowflow-webhook -ilerplate- java -master.

Это мой код выполнения:

package com.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.SQLException;
import com.google.actions.api.ActionRequest;
import com.google.actions.api.ActionResponse;
import com.google.actions.api.DialogflowApp;
import com.google.actions.api.ForIntent;
import com.google.actions.api.response.ResponseBuilder;
import com.google.api.services.actions_fulfillment.v2.model.User;
import java.util.ResourceBundle;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

    public class MyActionsApp extends DialogflowApp 
{

  private static final Logger LOGGER = LoggerFactory.getLogger(MyActionsApp.class);

  @ForIntent("admin add user")
  public ActionResponse add_user(ActionRequest request) 
  { 
    ResponseBuilder responseBuilder = getResponseBuilder(request);
    String name = (String) request.getParameter("name");
    String num =   (String) request.getParameter("number");
    String email = (String)request.getParameter("email");
    String prompt;
    int conf= Integer.parseInt((String)request.getParameter("conf"));
    if(conf==1)
    {
        try
        {
            Connection con=DriverManager.getConnection("jdbc:mysql//localhost:3306/bhk","root","");
            Statement mystmt=con.createStatement();
            String sql="insert into users"+"(name,phone,email,status)"+"values('name','num','email',0)";
            mystmt.executeQuery(sql);
            prompt="Insertion succesful";
            responseBuilder.add(prompt).endConversation();
        }
        catch(Exception e)
        {e.printStackTrace();}
    }
    else
    {
        prompt="Request Cancelled";
        responseBuilder.add(prompt).endConversation();
    }
    return responseBuilder.build();

Я использовал gradle для развертывания этого в облаке с помощью appengineDeploy , Каждый раз, когда я запускаю это намерение, я получаю это.

ОТВЕТ RAW API:

"webhookStatus": {
    "code": 3,
    "message": "Webhook call failed. Error: Failed to parse webhook JSON response: Expect message object but got: \"Error\"."
  }

ОТВЕТ НА ВЫПОЛНЕНИЕ:

Error handling the intent - java.lang.Exception
<br />
FULFILLMENT STATUS : <br />
  Webhook call failed. Error: Failed to parse webhook JSON response: Expect message object but got: "Error".

Также иногда при развертывании в облаке с помощью gradle при загрузке иногда говорит загрузка 0 файлов. Может ли это быть проблемой?

Я также запустил это на тестовой вкладке console.actions.google.com и там было сказано:

Неправильный ответ Не удалось проанализировать ответ Dialogflow в AppResponse. из-за неверного ответа платформы: не удалось найти RichResponse или SystemIntent в ответе платформы ...

...