java - 无法在 Dialogflow 模拟器中显示响应。请改为在 Google Assistant 模拟器上进行测试
问题描述
我正在 Android 上开发一个应用程序,它实现了一个在 dialogflow 上创建的聊天机器人,但在 Google 上的操作中已经实现了一些意图,当我调用一些意图时,我得到这个结果:“错误:无法在 Dialogflow 模拟器中显示响应。请在而是谷歌助理模拟器”
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();
}
}
}
解决方案
推荐阅读
- reactjs - VS Code 谷歌调试器未验证断点
- xamarin - 从事件调用时,Xamarin.Forms 导航不起作用
- java - JavaFX设置组合框导致空指针
- modelica - 带有特殊字符的路径
- vba - Copy from cell if two other cells meet criteria?
- node.js - 如何在不声明新变量的情况下正确更新 chokidar 文件选择?
- java - Mockito 用参数模拟一个新的实例调用
- java - Jersey JAX-RS注释接口而不是实现类导致错误
- google-cloud-platform - 谷歌云实例的带宽使用情况
- javascript - AdminLTE v2.3.8。数据表日期时间列排序