java - Salesforce 现场代理状态

标签 java android salesforce salesforce-service-cloud

我已根据 documentation 实现了代理实时可用性.根据文档,问题是它会落在 OnResult 方法中,但每次响应都落在 OnCompleted 方法中,我无法从 async可变。 如果我遗漏了什么或如何从 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());
        }

最佳答案

事实证明,我在我的 gradle 文件中缺少一些依赖项,而且更新的库版本要求您使用 minSDK 21,而我使用的是 minSDK 19。

以下是支持聊天和预聊天功能所需的依赖项:

implementation 'com.salesforce.service:chat-ui:3.1.0'
implementation 'com.salesforce.service:chat-core:3.1.0'

显然在官方文档中没有提到它。

Reference Agent

Reference Chat

关于java - Salesforce 现场代理状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380757/

相关文章:

android - 在Android App中单击按钮时如何打开Gmail Compose?

ruby-on-rails - 销售人员 REST API : Databasedotcom gem to upload attachments

java - 在 Java 中使用流的 byte[] 到 byte[] 的 ArrayList

java - Serialized RDD如何在内存中占用更少的空间?

java - 在文件路径中向后走

azure - Azure 云服务和 Salesforce 之间的相互(2 路)SSL

salesforce - 在 LWC 中隐藏/显示按钮

java - ElementNotVisibleException 错误

Android - 全局跟踪看不见的通知,最佳实践

java - 如何动态追加新行到多行 TextView