Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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;
            }
        }