我已经根据documentation实现了代理的实时可用性。问题是根据文档,它会以 OnResult 方法进入,但是每次响应都以 OnCompleted 方法进入,而我无法从异步中检索代理状态。 strong>变量。 如果我缺少任何内容或如何从 OnCompleted 获取实时代理可用性,请指导我。
我的代码(在HomeFragment中调用)
private void setupChatButton() {
try {
// Build a configuration object
ChatConfiguration chatConfiguration =
new ChatConfiguration.Builder(ORG_ID, BUTTON_ID,
DEPLOYMENT_ID, LIVE_AGENT_POD)
.build();
// Create an agent availability client
AgentAvailabilityClient client = ChatCore.configureAgentAvailability(chatConfiguration);
// Check agent availability
client.check().onResult((async, state) -> {
switch (state.getStatus()) {
case AgentsAvailable: {
// Toast.makeText(context, "Available Chat", Toast.LENGTH_LONG).show();
isAgentAvailable = true;
fabChat.setBackgroundTintList(ContextCompat.getColorStateList(context, R.color.colorAccent));
break;
}
case NoAgentsAvailable: {
// Toast.makeText(context, "NOAGENTS Chat", Toast.LENGTH_LONG).show();
isAgentAvailable = false;
fabChat.setBackgroundTintList(ContextCompat.getColorStateList(context, R.color.grey));
break;
}
case Unknown: {
// Toast.makeText(context, "UNKNOWN Chat", Toast.LENGTH_LONG).show();
isAgentAvailable = false;
fabChat.setBackgroundTintList(ContextCompat.getColorStateList(context, R.color.grey));
break;
}
}
})
.onComplete(async -> {
Log.e("Home Fragment ", "Chat Call completed");
if (async.isComplete()) {
isAgentAvailable = true;
fabChat.setBackgroundTintList(ContextCompat.getColorStateList(context, R.color.colorAccent));
} else {
isAgentAvailable = false;
fabChat.setBackgroundTintList(ContextCompat.getColorStateList(context, R.color.grey));
}
// Toast.makeText(context, "Chat Completed!", Toast.LENGTH_LONG).show();
});
} catch (Exception e) {
Log.e(getContext().getClass().getSimpleName(), e.getMessage());
}
答案 0 :(得分:0)
因此,事实证明我的gradle文件中缺少某些依赖项,更新的库版本也要求您使用minSDK 21,而我使用的是minSDK 19。
以下是支持聊天和preChat功能所需的依赖项:
implementation 'com.salesforce.service:chat-ui:3.1.0'
implementation 'com.salesforce.service:chat-core:3.1.0'
显然,官方文档中没有对此的引用。