public void onEvent(PlayerEvent event) { try { logger.info("ENDING CALL "); Player player = event.getSource(); MediaGroup mg = player.getContainer(); if (event.isSuccessful() && (PlayerEvent.PLAY_COMPLETED == event.getEventType())) { MediaSession session =(MediaSession)sipSession.getAttribute("mediaSession"); session.release(); Thread.sleep(1500); SipServletRequest byeRequest = sipSession.createRequest("BYE"); byeRequest.send(); } } catch (Exception e) { logger.error("Error", e); } }
public static void playFileInResponseToDTMFInfo(SipSession session, String audioFile) { logger.info("playing " + audioFile + " in response to DTMF"); MediaGroup mg = (MediaGroup) session.getAttribute("mediaGroup"); // Let us request for Announcement Complete event or Failure // in case if it happens try { mg.getPlayer().play(URI.create(audioFile), null, null); } catch (MsControlException e) { // TODO Auto-generated catch block e.printStackTrace(); } session.setAttribute("DTMFSession", DTMFListener.DTMF_SESSION_STOPPED); logger.info("played " + audioFile + " in response to DTMF"); } }
/** * Allows to override the System header modifiable rule assignment. * * @return if the InitParameter is present at servletContext, or null * otherwise */ protected ModifiableRule retrieveModifiableOverriden() { ModifiableRule overridenRule = null; //use local var to prevent potential concurent cleanup SipSession session = getSession(); if (session != null && session.getServletContext() != null) { String overridenRuleStr = session.getServletContext().getInitParameter(SYS_HDR_MOD_OVERRIDE); if (overridenRuleStr != null) { overridenRule = ModifiableRule.valueOf(overridenRuleStr); } } return overridenRule; }
public static SipSession getLinkedSession(SipServletMessage message) { SipSession sipSession = null; if (message.getSession().isValid()) { sipSession = (SipSession) message.getSession().getAttribute(B2BUA_LINKED_SESSION); } if (sipSession == null) { if(logger.isInfoEnabled()) { logger.info("SIP SESSION is NULL"); } } return sipSession; }
logger.info(String.format("B2BUA: Got response: \n %s", response)); if (response.getSession() == null || !response.getSession().isValid()) { if (logger.isDebugEnabled()) { logger.debug("Response session is either null or invalidated"); if (getLinkedSession(response) == null || !getLinkedSession(response).isValid()) { if (logger.isDebugEnabled()) { logger.debug("Linked session of response is either null or invalidated"); response.getSession().setAttribute(B2BUA_LAST_FINAL_RESPONSE, response); SipServletRequest request = (SipServletRequest) getLinkedSession(response).getAttribute(B2BUA_LAST_REQUEST); CallDetailRecord callRecord = records.getCallDetailRecord((Sid) request.getSession().getAttribute(CDR_SID)); (!response.getSession().getState().equals(SipSession.State.TERMINATED))) { response.getSession().setAttribute(B2BUA_LAST_RESPONSE, response); SipServletRequest linkedRequest = (SipServletRequest) getLinkedSession(response).getAttribute(B2BUA_LAST_REQUEST); SipServletResponse clonedResponse = linkedRequest.createResponse(response.getStatus()); SipURI originalURI = null; CallDetailRecord callRecord = records.getCallDetailRecord((Sid) linkedRequest.getSession().getAttribute(CDR_SID)); Sid organizationSid = daoManager.getAccountsDao().getAccount(callRecord.getAccountSid()).getOrganizationSid();
public static SipServletRequest getLinkedRequest(SipServletMessage message) { SipSession linkedB2BUASession = getLinkedSession(message); if (linkedB2BUASession != null) { SipServletRequest linkedRequest = (SipServletRequest) linkedB2BUASession.getAttribute(B2BUA_LAST_REQUEST); return linkedRequest; } return null; }
stringBuffer.append(". Press 1 to confirm and 2 to decline."); sipServletRequest.getSession().setAttribute("speechUri", java.net.URI.create("data:" + URLEncoder.encode("ts("+ stringBuffer +")", "UTF-8"))); sipServletRequest.getSession().setAttribute("customerName", customerName); sipServletRequest.getSession().setAttribute("customerPhone", customerPhone); sipServletRequest.getSession().setAttribute("amountOrder", amount); sipServletRequest.getSession().setAttribute("orderId", orderId); sipServletRequest.getSession().setAttribute("connection", conn); sipServletRequest.getSession().setAttribute("mediaGroup", mg); sipServletRequest.getSession().setAttribute("mediaSession", mediaSession); sipServletRequest.getSession().setAttribute("orderApproval", true); sipServletRequest.getSession().setAttribute("caller", (String)Contexts.getApplicationContext().get("caller.sip")); sipServletRequest.getSession().setAttribute("callerDomain", (String)Contexts.getApplicationContext().get("caller.domain")); sipServletRequest.getSession().setAttribute("callerPassword", (String)Contexts.getApplicationContext().get("caller.password")); sipServletRequest.send(); mg.getSignalDetector().addListener(new DTMFListener(mg, sipServletRequest.getSession(), MMSUtil.audioFilePath));
private void terminate() { final SipSession sipSession = initialInvite.getSession(); final SipServletRequest bye = sipSession.createRequest("BYE"); try { bye.send(); } catch(final IOException exception) { logger.error(exception); } server.destroyMediaSession(session); }
private void cleanup() { server.destroyMediaSession(session); initialInvite.getSession().invalidate(); }
public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException { if(request != null) { ((SipServletRequest)request).getSession().setHandler(handler.getName()); } else { ((SipServletResponse)response).getSession().setHandler(handler.getName()); } Servlet servlet = handler.allocate(); servlet.service(request, response); handler.deallocate(servlet); }
State.TERMINATED.equals(((MobicentsSipSession)session1).getState()) || State.TERMINATED.equals(((MobicentsSipSession)session2).getState()) || !session1.getApplicationSession().equals(session2.getApplicationSession()) || (sessionMap.get(((MobicentsSipSession)session1).getKey()) != null && sessionMap.get(((MobicentsSipSession)session1).getKey()) != ((MobicentsSipSession)session2).getKey()) || (sessionMap.get(((MobicentsSipSession)session2).getKey()) != null && sessionMap.get(((MobicentsSipSession)session2).getKey()) != ((MobicentsSipSession)session1).getKey())) {
public static SipServletResponse getLinkedResponse(SipServletMessage message) { SipSession linkedB2BUASession = getLinkedSession(message); // if this is an ACK that belongs to a B2BUA session, then we proxy it to the other client if (linkedB2BUASession != null) { SipServletResponse response = (SipServletResponse) linkedB2BUASession.getAttribute(B2BUA_LAST_RESPONSE); return response; } return null; }
stringBuffer.append(" minute. Thank you. Bye."); sipServletRequest.getSession().setAttribute("speechUri", java.net.URI.create("data:" + URLEncoder.encode("ts("+ stringBuffer +")", "UTF-8"))); Thread.sleep(300); sipServletRequest.setContent(sdpOffer, "application/sdp"); MediaGroup mg = mediaSession.createMediaGroup(MediaGroup.PLAYER_SIGNALDETECTOR); sipServletRequest.getSession().setAttribute("mediaGroup", mg); sipServletRequest.getSession().setAttribute("mediaSession", mediaSession); sipServletRequest.getSession().setAttribute("customerName", customerfullname); sipServletRequest.getSession().setAttribute("customerPhone", cutomerphone); sipServletRequest.getSession().setAttribute("amountOrder", amount); sipServletRequest.getSession().setAttribute("orderId", orderId); sipServletRequest.getSession().setAttribute("connection", conn); sipServletRequest.getSession().setAttribute("shipping", true); sipServletRequest.send(); mg.getSignalDetector().addListener(new DTMFListener(mg, sipServletRequest.getSession(), MMSUtil.audioFilePath));
final MobicentsSipSession sessionImpl = (MobicentsSipSession) session; final SipServletRequestImpl newSubsequentServletRequest = (SipServletRequestImpl) session.createRequest(origRequest.getMethod());
public static void playAnnouncement(MediaGroup mg, SipSession sipSession, String pathToAudioDirectory) { try { java.net.URI uri = (java.net.URI) sipSession.getAttribute("speechUri"); if(sipSession.getAttribute("orderApproval") != null) { logger.info("Playing confirmation announcement : " + uri); mg.getPlayer().play(uri, null, null); mg.getSignalDetector().receiveSignals(1, null, null, null); sipSession.setAttribute("DTMFSession", DTMFListener.DTMF_SESSION_STARTED); logger.info("Waiting for DTMF at the same time.."); } else if (sipSession.getAttribute("deliveryDate") != null) { logger.info("Playing Delivery Date Announcement : " + uri); mg.getPlayer().play(uri, null, null); mg.getSignalDetector().receiveSignals(1, null, null, null); sipSession.setAttribute("DTMFSession", DTMFListener.DTMF_SESSION_STARTED); logger.info("Waiting for DTMF at the same time.."); } else if (sipSession.getAttribute("shipping") != null) { logger.info("Playing shipping announcement : " + uri); mg.getPlayer().play(uri, null, null); mg.getPlayer().addListener(new EndCallWhenPlaybackCompletedListener(sipSession)); logger.info("shipping announcement played. tearing down the call"); } } catch (Exception e) { logger.error(e); } }
public void onEvent(SdpPortManagerEvent arg0) { if((Boolean.TRUE).equals(inviteRequest.getSession().getAttribute("playAnnouncement"))) { NetworkConnection connection = (NetworkConnection) inviteRequest.getSession().getAttribute("connection"); MediaGroup mg =(MediaGroup)inviteRequest.getSession().getAttribute("mediaGroup"); try { playAnnouncement(mg, inviteRequest.getSession(), (String)inviteRequest.getSession().getAttribute("audioFilePath")); }catch (Exception e) { logger.error(e); } } } }
sipServletRequest.setContent(sdpOffer, "application/sdp"); MediaGroup mg = mediaSession.createMediaGroup(MediaGroup.PLAYER_SIGNALDETECTOR); sipServletRequest.getSession().setAttribute("mediaGroup", mg); sipServletRequest.getSession().setAttribute("mediaSession", mediaSession); sipServletRequest.getSession().setAttribute("customerName", customerfullname); sipServletRequest.getSession().setAttribute("customerPhone", cutomerphone); sipServletRequest.getSession().setAttribute("amountOrder", amount); sipServletRequest.getSession().setAttribute("orderId", orderId); sipServletRequest.getSession().setAttribute("connection", conn); sipServletRequest.getSession().setAttribute("deliveryDate", true); String announcementFile = MMSUtil.audioFilePath + "/OrderDeliveryDate.wav"; sipServletRequest.getSession().setAttribute("speechUri", java.net.URI.create(announcementFile)); sipServletRequest.getSession().setAttribute("caller", (String)Contexts.getApplicationContext().get("caller.sip")); sipServletRequest.getSession().setAttribute("callerDomain", (String)Contexts.getApplicationContext().get("caller.domain")); sipServletRequest.getSession().setAttribute("callerPassword", (String)Contexts.getApplicationContext().get("caller.password")); sipServletRequest.send(); mg.getSignalDetector().addListener(new DTMFListener(mg, sipServletRequest.getSession(), MMSUtil.audioFilePath));
newRequest, origRequest.getSession().getServletContext()); final FromHeader newFromHeader = (FromHeader) newRequest.getHeader(FromHeader.NAME); newFromHeader.removeParameter("tag");
String dateAndTime = (String) session.getAttribute("dateAndTime"); if(dateAndTime == null) { dateAndTime = ""; InitialContext ctx = new InitialContext(); OrderManager orderManager = (OrderManager) ctx.lookup("shopping-demo/OrderManagerBean/remote"); orderManager.setDeliveryDate(session.getAttribute("orderId"), timeStamp); } catch (NamingException e) { logger.error("An exception occured while retrieving the EJB OrderManager",e); try { URI delieryDateSummary = java.net.URI.create("data:" + URLEncoder.encode("ts("+ stringBuffer +")", "UTF-8")); session.setAttribute("speechUri", delieryDateSummary); java.io.File speech = new File("deliveryDate.wav"); logger.info("Playing delivery date summary : " + "TTS:" + stringBuffer); MediaGroup mg = (MediaGroup) session.getAttribute("mediaGroup"); mg.getPlayer().play(delieryDateSummary, null, null); mg.getPlayer().addListener(new EndCallWhenPlaybackCompletedListener(session)); session.setAttribute("dateAndTime", dateAndTime); return false;
private static void sendCallInfoStreamEvent(ActorSystem system, SipServletMessage message, CallStateChanged.State state) { SipSession session = message.getSession(); Object sid = session.getAttribute(CDR_SID); if (sid != null) { CallInfo callInfo = new CallInfo( (Sid) sid, (Sid) session.getAttribute(CDR_ACCOUNT_SID), state, null, (String) session.getAttribute(CDR_DIRECTION), null, null, null, (String) session.getAttribute(CDR_FROM), (String) session.getAttribute(CDR_TO), null, null, false, false, false, null, null ); system.eventStream().publish(new CallInfoStreamEvent(callInfo)); } } }