private void send(final Object message) { final Class<?> klass = message.getClass(); final String parameters = message.toString(); MgcpEvent event = null; if (Play.class.equals(klass)) { event = AUMgcpEvent.aupa.withParm(parameters); } else if (PlayCollect.class.equals(klass)) { event = AUMgcpEvent.aupc.withParm(parameters); } else if (PlayRecord.class.equals(klass)) { event = AUMgcpEvent.aupr.withParm(parameters); } sendRequest(new EventName(PACKAGE_NAME, event), REQUESTED_EVENTS); }
public static int encodeParams(byte[] destination,int offset,EventName eventName) { if(eventName.getEventIdentifier().getParms()==null) return 0; destination[offset]=StringFunctions.OPEN_BRACKET_BYTE; byte[] paramsBytes=eventName.getEventIdentifier().getParms().getBytes(); System.arraycopy(paramsBytes, 0, destination, offset+1, paramsBytes.length); destination[offset+paramsBytes.length+1]=StringFunctions.CLOSE_BRACKET_BYTE; return paramsBytes.length+2; }
public String encodeEventName(EventName e) { StringBuffer s = new StringBuffer(""); s.append(e.getPackageName().toString()).append('/').append(e.getEventIdentifier().getName()); if (e.getConnectionIdentifier() != null) { s.append(AMPERSAND).append(e.getConnectionIdentifier().toString()); } if (e.getEventIdentifier().getParms() != null) { s.append('(').append(e.getEventIdentifier().getParms()).append(')'); } return s.toString(); }
protected void notify (final Object message, final ActorRef sender) { final ActorRef self = self(); final NotificationRequest request = (NotificationRequest) message; MgcpEvent event = null; if (request.getSignalRequests()[0].getEventIdentifier().getName().equalsIgnoreCase("es") || request.getSignalRequests()[0].getEventIdentifier().getName().equalsIgnoreCase("pr")) { //Looks like this is either an RQNT AU/ES or //recording max length reached and we got the original recording RQNT event = AUMgcpEvent.auoc.withParm("AU/pr ri=file://" + recordingFile.toPath() + " rc=100 dc=1"); } else { event = AUMgcpEvent.auoc.withParm("rc=100 dc=1"); } final EventName[] events = {new EventName(AUPackage.AU, event)}; final Notify notify = new Notify(this, request.getEndpointIdentifier(), request.getRequestIdentifier(), events); notify.setTransactionHandle((int) transactionIdPool.get()); System.out.println(notify.toString()); sender.tell(notify, self); }
switch (observedEvent.getEventIdentifier().intValue()) { case MgcpEvent.REPORT_ON_COMPLETION: log.info("########## VOICE MAIL SBB: Signal completed, event identifier["+observedEvent.getEventIdentifier()+"] ##########"); if(observedEvent.getEventIdentifier().getName().toString().equals("oc")) log.info("########## VOICE MAIL SBB: Signal failed, event identifier["+observedEvent.getEventIdentifier()+"] ##########"); if(observedEvent.getPackageName().toString().equals("D")) }else log.info("########## VOICE MAIL SBB: Notify on unknown event, event identifier["+observedEvent.getEventIdentifier()+"] identifier["+observedEvent.getEventIdentifier().intValue()+"] ##########");
@Override protected void notify(Object message, ActorRef sender) { final ActorRef self = self(); final NotificationRequest request = (NotificationRequest) message; MgcpEvent event = null; if (request.getSignalRequests()[0].getEventIdentifier().getName().equalsIgnoreCase("es") || request.getSignalRequests()[0].getEventIdentifier().getName().equalsIgnoreCase("pr")) { //Looks like this is either an RQNT AU/ES or //recording max length reached and we got the original recording RQNT event = AUMgcpEvent.auoc.withParm("AU/pr ri=file://" + recordingFile.toPath() + " rc=100 dc=1"); } else { event = AUMgcpEvent.auoc.withParm("rc=100 dc=1"); if(!request.getSignalRequests()[0].getEventIdentifier().getParms().contains("ringing.wav")) { try { Thread.sleep(2000); } catch (Exception e){ logger.error(e.toString()); } } } final EventName[] events = {new EventName(AUPackage.AU, event)}; final Notify notify = new Notify(this, request.getEndpointIdentifier(), request.getRequestIdentifier(), events); notify.setTransactionHandle((int) transactionIdPool.get()); System.out.println(notify.toString()); sender.tell(notify, self); } }
public void onNotifyRequest(Notify event, ActivityContextInterface aci) { logger.info("onNotifyRequest"); NotificationRequestResponse response = new NotificationRequestResponse(event.getSource(), ReturnCode.Transaction_Executed_Normally); response.setTransactionHandle(event.getTransactionHandle()); mgcpProvider.sendMgcpEvents(new JainMgcpEvent[] { response }); EventName[] observedEvents = event.getObservedEvents(); for (EventName observedEvent : observedEvents) { switch (observedEvent.getEventIdentifier().intValue()) { case MgcpEvent.REPORT_ON_COMPLETION: logger.info("Announcemnet Completed NTFY received"); break; case MgcpEvent.REPORT_FAILURE: logger.info("Announcemnet Failed received"); // TODO : Send DLCX and Send BYE to UA break; default: //MGCP RI expects D/dtmfX, but correct is D/X ... hence it fails to match on //MgcpEvent.DTMF_X .... Thus event ID is wrong.... if(observedEvent.getPackageName().toString().equals("D")) { int decodedId = decodeDTMF(observedEvent); processDTMF(decodedId); } } } }
public EventName generateMgcpEvent(String params, ConnectionIdentifier connId) { if (this.isOnEndpoint) { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params)); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName)); } } else { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params), connId); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName), connId); } } }
public static int encodeParams(byte[] destination,int offset,EventName eventName) { if(eventName.getEventIdentifier().getParms()==null) return 0; destination[offset]=StringFunctions.OPEN_BRACKET_BYTE; byte[] paramsBytes=eventName.getEventIdentifier().getParms().getBytes(); System.arraycopy(paramsBytes, 0, destination, offset+1, paramsBytes.length); destination[offset+paramsBytes.length+1]=StringFunctions.CLOSE_BRACKET_BYTE; return paramsBytes.length+2; }
public static int encode(byte[] destination,int offset,EventName eventName) { int totalLength=PackageNameHandler.encode(destination,offset,eventName.getPackageName()); destination[offset+totalLength]=StringFunctions.SLASH_BYTE; totalLength++; byte[] nameBytes=eventName.getEventIdentifier().getName().getBytes(); System.arraycopy(nameBytes, 0, destination, offset+totalLength, nameBytes.length); totalLength+=nameBytes.length; if(eventName.getConnectionIdentifier()!=null) { destination[offset+totalLength]=StringFunctions.AT_BYTE; totalLength++; byte[] connectionBytes=eventName.getConnectionIdentifier().toString().getBytes(); System.arraycopy(connectionBytes, 0, destination, offset+totalLength, connectionBytes.length); totalLength+=connectionBytes.length; } return totalLength; }
switch (observedEvent.getEventIdentifier().intValue()) { case MgcpEvent.REPORT_ON_COMPLETION: logger.info("Announcemnet Completed NTFY received"); EventName[] signalRequests = { new EventName(AUPackage.AU, AUMgcpEvent.aupr .withParm("ri="+getFileURL("recorded.wav")+" oa=true")/*, connId*/) }; notificationRequest.setSignalRequests(signalRequests);
public EventName generateMgcpEvent(String params, ConnectionIdentifier connId) { if (this.isOnEndpoint) { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params)); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName)); } } else { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params), connId); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName), connId); } } }
private void processNotify(Notify notify) { EventName[] events = notify.getObservedEvents(); for (EventName evt : events) { switch (evt.getEventIdentifier().intValue()) { case MgcpEvent.REPORT_ON_COMPLETION: fireEvent(evt.getEventIdentifier().getParms()); break; case MgcpEvent.REPORT_FAILURE: break; } } }
public static int encode(byte[] destination,int offset,EventName eventName) { int totalLength=PackageNameHandler.encode(destination,offset,eventName.getPackageName()); destination[offset+totalLength]=StringFunctions.SLASH_BYTE; totalLength++; byte[] nameBytes=eventName.getEventIdentifier().getName().getBytes(); System.arraycopy(nameBytes, 0, destination, offset+totalLength, nameBytes.length); totalLength+=nameBytes.length; if(eventName.getConnectionIdentifier()!=null) { destination[offset+totalLength]=StringFunctions.AT_BYTE; totalLength++; byte[] connectionBytes=eventName.getConnectionIdentifier().toString().getBytes(); System.arraycopy(connectionBytes, 0, destination, offset+totalLength, connectionBytes.length); totalLength+=connectionBytes.length; } return totalLength; }
public EventName generateMgcpEvent(String params, ConnectionIdentifier connId) { if (this.isOnEndpoint) { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params)); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName)); } } else { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params), connId); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName), connId); } } }
private int decodeDTMF(EventName observed) String eventName = observed.getEventIdentifier().getName(); if(Pattern.matches("\\d", eventName))
public String encodeRequestedEvent(RequestedEvent evt) { StringBuffer s = new StringBuffer((evt.getEventName().getPackageName()).toString()).append("/").append( evt.getEventName().getEventIdentifier().getName()); if (evt.getEventName().getConnectionIdentifier() != null) { s.append(AMPERSAND).append(evt.getEventName().getConnectionIdentifier().toString()); } String parms = evt.getEventName().getEventIdentifier().getParms(); RequestedAction[] actions = evt.getRequestedActions(); if (actions != null) { String ac = encodeRequestedActions(actions); s.append(" (").append(ac).append(")"); } if (parms != null) { s.append(" (").append(parms).append(")"); } return s.toString(); }
public EventName generateMgcpEvent(String params, ConnectionIdentifier connId) { if (this.isOnEndpoint) { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params)); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName)); } } else { if (params != null) { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName).withParm(params), connId); } else { return new EventName(PackageName.factory(pkgName), MgcpEvent.factory(eventName), connId); } } }
private int decodeDTMF(EventName observed) String eventName = observed.getEventIdentifier().getName(); if(Pattern.matches("\\d", eventName))
private void sendAsr(final AsrSignal message) { MgcpEvent event = AsrSignal.REQUEST_ASR.withParm(message.toString()); sendRequest(new EventName(PACKAGE_NAME, event), REQUESTED_EVENTS); }