使用 UCWA 聊天

Posted

技术标签:

【中文标题】使用 UCWA 聊天【英文标题】:chat using UCWA 【发布时间】:2013-10-22 08:02:55 【问题描述】:

我正在尝试使用 UCWA(Lync Web 应用程序) 实现双向聊天,我能够将数据发送到客户端,但我如何从该客户端接收回数据?实现适当的双向聊天?

我已附上代码以向特定用户发送一些 ping,我如何从用户接收数据以实现聊天?

       private void StarConversation(string startConversationLink, string hostName, string accessToken, string tokenType)
    
        var myObject = new JObject();
        myObject.Add("operationId", Guid.NewGuid().ToString().Replace("-", ""));
        myObject.Add("to", "sip:xyz@abcd.com");
        myObject.Add("subject", "TestConv");
        List<string> outgoing = new List<string>();
        List<string> incoming = new List<string>();
        List<string> timeout = new List<string>();
        JObject href = new JObject();
        string sending = "Hey there ! how are you doing ?";
        href.Add("href", "data:text/plain;base64," + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sending)));
        JObject message = new JObject();
        message.Add("message", href);
        myObject.Add("_links", message);
       HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", tokenType + " " + accessToken);
        client.PostAsync(new Uri(hostName + startConversationLink), new StringContent(JsonConvert.SerializeObject(myObject), Encoding.UTF8, "application/json")).Result;
        if (response.IsSuccessStatusCode)
        

            Uri temp = new Uri(hostName + m_eventsLink);
            HttpResponseMessage response2 = Get(client, temp.ToString());
            string nextLink = string.Empty;
            string timeo ;
            string ss = string.Empty;
             int i =0;
            if (response2.IsSuccessStatusCode)
            
                string retData2 = response2.Content.ReadAsStringAsync().Result;
                var o = JObject.Parse(retData2);
                nextLink = o["_links"]["next"]["href"].Value<string>();

                response = client.PostAsync(new Uri(hostName + startConversationLink), new StringContent(JsonConvert.SerializeObject(myObject), Encoding.UTF8, "application/json")).Result;
                temp = new Uri(hostName + m_eventsLink);
                response2 = Get(client, temp.ToString());
                retData2 = response2.Content.ReadAsStringAsync().Result;
                o = JObject.Parse(retData2);

            



             
    

【问题讨论】:

【参考方案1】:

此时您正在做的是与用户开始对话并提供初始消息以与消息传递邀请一起使用。我从这段代码片段中不知道的是:

您在收听事件吗? (这非常重要,因为这是您知道第二方接受/拒绝消息邀请以及其他诸如谁在打字和消息等信息的方式)。我建议查看GettingStarted-Events 并设置一种机制来请求事件。 您是否经常(约 3-5 分钟)对 reportMyActivity 发出 POST 请求,以确保应用程序不会被回收。如果没有,请查看Resources-reportMyActivity。

如果代码正在侦听事件并报告活动。下一步将监听messagingInvitation 并检查conversation/messaging 事件。对话将从正在连接(状态)(正在处理消息邀请)转换为已连接(已接受消息邀请)或已断开连接(消息邀请被拒绝,对话结束,其他错误)。假设其他用户接受下一个要检查的事件是已连接的消息状态(这意味着消息模式在对话中处于活动状态,并且sendMessage、addParticipant 和 setIsTyping 等有用的方法将可用)或已断开连接(这表示消息模式未激活,addMessaging 可用于启用此模式。

如果您能达到这一点,message 事件将在任何参与者向对话发送消息时出现。 direction 属性可用于确定当前 UCWA 用户何时发送消息(传出),对于所有其他用户,应该有一个可以识别用户的参与者属性。

【讨论】:

以上是关于使用 UCWA 聊天的主要内容,如果未能解决你的问题,请参考以下文章

使用 node js 和 UCWA 的聊天应用程序

在 UCWA Chat 应用程序中启用表情符号/表情符号

我们可以用 UCWA API (Lync) 做啥?以及我们不能用 UCWA API 做啥?

UCMA 与 UCWA - 用户与应用程序端点

UCWA:无法发送/接收格式化文本

UCWA:发送多条消息时出错