private void c_OnChannelDtmfReceivedEvent(object sender, ChannelDtmfReceivedEvent e) { ConferenceUser confUser = ConferenceUsers.SingleOrDefault(x => x.Channel.Id == e.Channel.Id); if (confUser == null) { return; } // Pass digit to conference user confUser.KeyPress(e.Digit); }
private void AriClient_OnChannelDtmfReceivedEvent(IAriClient sender, ChannelDtmfReceivedEvent e) { DtmfItem dtmfItem; dtmfs.TryGetValue(e.Channel.Id, out dtmfItem); if (dtmfItem != null) { dtmfItem.digits += e.Digit; if (dtmfItem.digits.Length == ssso.PinLength) { ssso.OnValidatePinBefore?.Invoke(new OnValidatePinBeforeArgs(dtmfItem)); var pinValidated = ssso.ValidatePin(dtmfItem); ssso.OnValidatePinAfter?.Invoke(new OnValidatePinAfterArgs(dtmfItem, pinValidated ? Constants.PinValidated : Constants.PinValidationError)); if (pinValidated) { ssso.OnAuthenticated(new OnAuthenticatedEventArgs(dtmfItem, Constants.Authenticated)); Hangup(dtmfItem.channel); return; } if (dtmfItem.retryCount >= ssso.RetryCount) { ssso.OnAuthenticationFailed(new OnAuthenticationFailedArgs(e.Channel, Constants.AuthenticationFailed)); Hangup(e.Channel); } else { ssso.OnAuthenticationFailed(new OnAuthenticationFailedArgs(e.Channel, Constants.PleaseAgainTry)); dtmfItem.retryCount++; dtmfItem.digits = ""; } return; } dtmfs.Remove(e.Channel.Id); dtmfs.Add(e.Channel.Id, dtmfItem); } }
private static void ActionClientOnChannelDtmfReceivedEvent(IAriClient sender, ChannelDtmfReceivedEvent e) { // When DTMF received switch (e.Digit) { case "*": sender.Channels.Play(e.Channel.Id, "sound:asterisk-friend"); break; case "#": sender.Channels.Play(e.Channel.Id, "sound:goodbye"); sender.Channels.Hangup(e.Channel.Id, "normal"); break; default: sender.Channels.Play(e.Channel.Id, string.Format("sound:digits/{0}", e.Digit)); break; } }