无法在Dialogflow模拟器中显示响应请改为在Google Assistant模拟器上测试

如何解决无法在Dialogflow模拟器中显示响应请改为在Google Assistant模拟器上测试

我正在Android上开发一个应用程序,该应用程序实现了一个在dialogflow上创建的聊天机器人,但是在Google的行动中实现了一些意图,当我调用某些意图时,我得到以下结果:“错误:无法在Dialogflow模拟器中显示响应。请而是在Google Assistant模拟器上进行测试”

public class MainActivity extends AppCompatActivity implements BotReplay {
private Activity activity;
RecyclerView chatView;
ChatAdapter chatAdapter;
List<Message> messageList = new ArrayList<>();
EditText editMessage;
ImageButton btnSend;

//dialogFlow
private SessionsClient sessionsClient;
private SessionName sessionName;
private String uuid= UUID.randomUUID().toString();
private String TAG = "mainactivity";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    chatView = findViewById(R.id.chatView);
    editMessage = findViewById(R.id.editMessage);
    btnSend = findViewById(R.id.btnSend);

    chatAdapter = new ChatAdapter (messageList,this);
    chatView.setAdapter(chatAdapter);

    btnSend.setonClickListener(new View.OnClickListener() {
        @Override public void onClick(View view) {
            String message = editMessage.getText().toString();
            if (!message.isEmpty()) {
                messageList.add(new Message(message,false));
                editMessage.setText("");
                sendMessagetoBot(message);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                    Objects.requireNonNull(chatView.getAdapter()).notifyDataSetChanged();
                }

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                    Objects.requireNonNull(chatView.getLayoutManager())
                            .scrollToPosition(messageList.size() - 1);
                }
            } else {
                Toast.makeText(MainActivity.this,"Please enter text!",Toast.LENGTH_SHORT).show();
            }
        }
    });

    setUpBot();
}


private void setUpBot(){
    try {
        InputStream stream = this.getResources().openRawResource(R.raw.credential);
        GoogleCredentials credentials = GoogleCredentials.fromStream(stream)
                .createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));
        String projectId = ((ServiceAccountCredentials) credentials).getProjectId();

        SessionsSettings.Builder settingsBuilder = SessionsSettings.newBuilder();
        SessionsSettings sessionsSettings = settingsBuilder.setCredentialsProvider(
                FixedCredentialsProvider.create(credentials)).build();
        sessionsClient = SessionsClient.create(sessionsSettings);
        sessionName = SessionName.of(projectId,uuid);
        Log.d(TAG,"projectId : " + projectId);
    }catch (Exception e){
        Log.d(TAG,"setUpBot : " + e.getMessage());
    }
}

private void sendMessagetoBot(String message){
    QueryInput input = QueryInput.newBuilder()
            .setText(TextInput.newBuilder().setText(message).setLanguageCode("Italian")).build();
    new SendMessageInBg(this,sessionName,sessionsClient,input).execute();
}

@Override
public void callback(DetectIntentResponse returnResponse) {
    if(returnResponse!=null) {
        String botReply = returnResponse.getQueryResult().getFulfillmentText();
        if(!botReply.isEmpty()){
            messageList.add(new Message(botReply,true));
            chatAdapter.notifyDataSetChanged();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                Objects.requireNonNull(chatView.getLayoutManager()).scrollToPosition(messageList.size() - 1);
            }
        }else {
            Toast.makeText(this,"something went wrong",Toast.LENGTH_SHORT).show();
        }
    } else {
        Toast.makeText(this,"Failed to connect!",Toast.LENGTH_SHORT).show();
    }
}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?