Salesforce 实时代理状态

Posted

技术标签:

【中文标题】Salesforce 实时代理状态【英文标题】:Sales Force live agent status 【发布时间】:2018-12-25 02:51:09 【问题描述】:

我已根据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());
        

【问题讨论】:

【参考方案1】:

原来我的 gradle 文件中缺少一些依赖项,更新后的库版本也要求您使用 minSDK 21,而我使用的是 minSDK 19。

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

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

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

Reference Agent

Reference Chat

【讨论】:

以上是关于Salesforce 实时代理状态的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 Ajax 和 Visual Composer(原始 HTML 和原始 JS)提交 HTML Salesforce 表单吗

如何处理耗时的ajax请求

从 Salesforce 查询 Snowflake 表

实时代理建议?

sales force看不到审批状态

一步一步学习SignalR进行实时通信_7_非代理