2013-10-22 3 views
1

UCWA (Lync 웹 응용 프로그램)를 사용하여 양방향 채팅을 구현하려고하는데 데이터를 클라이언트에 보낼 수는 있지만 클라이언트에서 다시 수신하려면 어떻게해야합니까? 적절한 양방향 채팅을 구현할 수 있습니까?UCWA를 사용하여 채팅

특정 사용자에게 일부 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:[email protected]"); 
     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); 

      } 



      } 
    } 

답변

2

이 시점에서 사용자와 대화를 시작하고 messagingInvitation과 함께 사용할 초기 메시지를 제공하고 있습니다. 이 코드 조각에서 알 수없는 내용은 다음과 같습니다.

  • 이벤트를 듣고 있습니까? (이것은 매우 중요합니다. 이는 제 2자가 타자를 치는 것과 메시지과 같은 다른 메시지 중에서 messagingInvitation을 수락/거절했음을 알 수있는 방법입니다. GettingStarted-Events을 조사하고 이벤트를 요청하는 메커니즘을 설정하는 것이 좋습니다.
  • reportMyActivity에 대한 (3-5 분 정도) POST 요청을 만들어 응용 프로그램이 재활용되지 않도록하십시오. 그렇지 않은 경우 Resources-reportMyActivity을 확인하십시오.

코드가 이벤트 및보고 활동을 수신하는 경우. 다음 단계는 messagingInvitation을 청취하고 conversation/messaging 이벤트를 확인합니다. 대화는 연결 (상태) (messageInvitation 처리 중)에서 연결됨 (messagingInvitation이 수락 됨) 또는 연결 해제 됨 (messagingInvitation이 거부 됨, 대화가 종료 됨, 다른 오류)으로 전환됩니다. 다른 사용자가 확인할 다음 이벤트를 수락한다고 가정하면 메시징 상태가 대화에서 활성화되고 sendMessage, addParticipantsetIsTyping과 같은 유용한 방법을 사용할 수 있음) 또는 연결이 끊어졌습니다 (메시징 양식이 활성화되지 않음을 의미 함) 및 addMessaging을 사용하여이 양식을 사용할 수 있습니다.

참석자가 대화에 메시지를 보낼 때 이벤트가 표시됩니다. 방향 속성을 사용하여 현재 UCWA 사용자가 메시지 (발신)이고 다른 모든 사용자의 경우 사용자를 식별 할 수있는 참여자 속성이 있어야합니다.

관련 문제