@Override
  public void onFailure(LiveException e) {
    MotechEvent event = callRequest.getOnFailureEvent();

    if (event != null) {
      CallDetailRecord cdr = new CallDetailRecord(CallDisposition.FAILED, e.getMessage());

      Map<String, Object> parameters = event.getParameters();
      parameters.put(IVREventDelegate.CALL_DETAIL_RECORD_KEY, cdr);

      eventRelay.sendEventMessage(event);
    }
  }
  @Override
  public void onBusy(AsteriskChannel asteriskChannel) {
    MotechEvent event = callRequest.getOnBusyEvent();

    if (event != null) {
      org.asteriskjava.live.CallDetailRecord aCDR = asteriskChannel.getCallDetailRecord();
      CallDetailRecord cdr =
          new CallDetailRecord(
              aCDR.getStartDate(),
              aCDR.getEndDate(),
              aCDR.getAnswerDate(),
              translateDisposition(aCDR.getDisposition()),
              aCDR.getDuration());

      Map<String, Object> parameters = event.getParameters();
      parameters.put(IVREventDelegate.CALL_DETAIL_RECORD_KEY, cdr);

      eventRelay.sendEventMessage(event);
    }
  }