C# 使用UCWA聊天
我正在尝试使用UCWA(Lync web app)实现双向聊天,我能够将数据发送到客户端,但如何从该客户端接收数据?实现正确的双向聊天 我已经附加了代码向特定用户发送一些ping,如何从用户那里接收数据以实现聊天C# 使用UCWA聊天,c#,asp.net,lync,ucwa,C#,Asp.net,Lync,Ucwa,我正在尝试使用UCWA(Lync web app)实现双向聊天,我能够将数据发送到客户端,但如何从该客户端接收数据?实现正确的双向聊天 我已经附加了代码向特定用户发送一些ping,如何从用户那里接收数据以实现聊天 private void StarConversation(string startConversationLink, string hostName, string accessToken, string tokenType) { var myO
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);
}
}
}
private void StarConversation(字符串startConversationLink、字符串主机名、字符串访问令牌、字符串令牌类型)
{
var myObject=new JObject();
添加(“operationId”,Guid.NewGuid().ToString().Replace(“-”,”);
myObject.Add(“to”,“sip:xyz@abcd.com");
myObject.Add(“主题”、“测试conv”);
列表传出=新列表();
列表传入=新列表();
列表超时=新建列表();
JObject href=new JObject();
string sending=“嘿,你好吗?”;
href.Add(“href”,“数据:text/plain;base64,”+Convert.ToBase64String(System.text.Encoding.UTF8.GetBytes(sending));
JObject message=new JObject();
message.Add(“message”,href);
添加(“\u链接”,消息);
HttpClient=新的HttpClient();
client.DefaultRequestHeaders.Add(“授权”,令牌类型+“”+accessToken);
PostAsync(新Uri(主机名+startConversationLink)、新StringContent(JsonConvert.SerializeObject(myObject)、Encoding.UTF8,“应用程序/json”)).Result;
if(响应。IsSuccessStatusCode)
{
Uri temp=新Uri(主机名+m_事件链接);
HttpResponseMessageResponse2=Get(客户端,temp.ToString());
string nextLink=string.Empty;
字符串timeo;
string ss=string.Empty;
int i=0;
if(响应2.IsSuccessStatusCode)
{
字符串retData2=response2.Content.ReadAsStringAsync().Result;
var o=JObject.Parse(retData2);
nextLink=o[“_links”][“next”][“href”].Value();
response=client.PostAsync(新Uri(主机名+startConversationLink)、新StringContent(JsonConvert.SerializeObject(myObject)、Encoding.UTF8,“应用程序/json”)).Result;
temp=新Uri(主机名+m_事件链接);
response2=Get(客户端,temp.ToString());
retData2=response2.Content.ReadAsStringAsync().Result;
o=JObject.Parse(retData2);
}
}
}
此时,您要做的是与用户开始对话,并提供一条初始消息,以配合messagingInvitation。从这个代码片段中我不知道的是:
- 你在听活动吗?(这一点非常重要,因为这是您如何知道第二方接受/拒绝了信息邀请以及其他事项,如谁在打字和发送信息)。我建议研究并建立一个机制来请求活动
- 您是否经常(约3-5分钟)对reportMyActivity发出POST请求,以确保应用程序不会被回收。如果没有,请检查