public void should_register_new_codec() { var sipMessageManager = kernel.Get <KamailioMessageManager>(); var sipRep = kernel.Get <RegisteredSipRepository>(); // ASSIGN var userName = "******"; // Delete any already registered codec var existingSip = sipRep.Single(rs => rs.SIP == userName); if (existingSip != null) { sipRep.DeleteRegisteredSip(existingSip.Id); } var ipAddress = GetRandomLocationIpAddress(); var displayName = "Test"; var sipMessage = CreateSipMessage(ipAddress, "ME-UMAC2-M/0.255", userName, displayName); // ACT KamailioMessageHandlerResult result = sipMessageManager.DoHandleMessage(sipMessage); // ASSERT Assert.AreEqual(KamailioMessageChangeStatus.CodecAdded, result.ChangeStatus); var sip = sipRep.Single(rs => rs.SIP == userName); Assert.AreEqual(ipAddress, sip.IP); Assert.AreEqual(userName, sip.User.UserName); // Clean up sipRep.DeleteRegisteredSip(sip.Id); }
public void Update(KamailioMessageHandlerResult updateResult) { if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CallStarted) { // Load call and update to and from codecs var callId = updateResult.ChangedObjectId; var callInfo = _callRepository.GetCallInfoById(callId); if (callInfo != null) { log.Warn("Call started. From:{0} To:{1}", callInfo.FromId, callInfo.ToId); UpdateCodecStatusByGuid(callInfo.FromId); UpdateCodecStatusByGuid(callInfo.ToId); } else { log.Warn("Call started but was not found in database. Call Id:{0}", callId); } } if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CallClosed) { // Load call and update to and from codecs var callId = updateResult.ChangedObjectId; CallHistory call = _callHistoryRepository.GetCallHistoryByCallId(callId); if (call != null) { log.Info("Call closed. From:{0} To:{1} Call ID:{2}", call.FromId, call.ToId, callId); UpdateCodecStatusByGuid(call.FromId); UpdateCodecStatusByGuid(call.ToId); } else { log.Warn("Call closed but was not found in call history. Call Id:{0}", callId); } } if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CodecAdded || updateResult.ChangeStatus == KamailioMessageChangeStatus.CodecUpdated) { UpdateCodecStatusByGuid(updateResult.ChangedObjectId); } if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CodecRemoved) { var codecStatus = new CodecStatus { State = CodecState.NotRegistered, SipAddress = updateResult.SipAddress }; CodecStatusHub.UpdateCodecStatus(codecStatus); } log.Info("StatusHub is updating. status={0}, id={1}", updateResult.ChangeStatus, updateResult.ChangedObjectId); }
public ActionResult EditRegisteredSipComment(RegisteredSipComment sipComment) { if (sipComment.RegisteredSipId != Guid.Empty) { _userManager.SaveComment(sipComment); } var updateResult = new KamailioMessageHandlerResult() { ChangeStatus = KamailioMessageChangeStatus.CodecUpdated, ChangedObjectId = sipComment.RegisteredSipId }; _guiHubUpdater.Update(updateResult); _statusHubUpdater.Update(updateResult); return(null); }
public IHttpActionResult Post([FromBody] string message) { log.Debug("Incoming Kamailio message: {0}", message); if (string.IsNullOrWhiteSpace(message)) { log.Warn("Kamailio event controller received empty data"); return(BadRequest()); } KamailioMessageHandlerResult result = _sipMessageManager.HandleMessage(message); if (result == null) { log.Warn("Kamailio message was handled but result was null"); } else if (result.ChangeStatus != KamailioMessageChangeStatus.NothingChanged) { _guiHubUpdater.Update(result); // First web gui _statusHubUpdater.Update(result); // Then codec status to external clients } return(Ok()); }
public void Update(KamailioMessageHandlerResult updateResult) { log.Debug("GuiHubUpdater is updating. status={0}, id={1}", updateResult.ChangeStatus, updateResult.ChangedObjectId); if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CallStarted) { WebGuiHub.ThrottlingUpdateOngoingCalls(); WebGuiHub.ThrottlingUpdateCodecsOnline(); } if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CallClosed) { WebGuiHub.ThrottlingUpdateOngoingCalls(); WebGuiHub.ThrottlingUpdateOldCalls(); WebGuiHub.ThrottlingUpdateCodecsOnline(); } if (updateResult.ChangeStatus == KamailioMessageChangeStatus.CodecAdded || updateResult.ChangeStatus == KamailioMessageChangeStatus.CodecUpdated || updateResult.ChangeStatus == KamailioMessageChangeStatus.CodecRemoved) { WebGuiHub.ThrottlingUpdateCodecsOnline(); } }