[AsteriskBrasil] Sobre identificador de chamadas DTMF no X100P e clones

Allan D. Piske zyryz em terra.com.br
Terça Maio 9 10:36:48 BRT 2006


caramba pra que complicar tanto ..
porque nao simplesmente instalar com conversor dtmf-fsk .. problema 
resolvido.
afinal sao relativamente baratos, e uma maquina asterisk nao aguenta mais de 
2 x100p mesmo
volumes maiores de linhas ja eh melhor usar troncos digitais .. E1 .. ai eh 
digital e nao precisa se preocupar mais com callerid.
mas se for simples implementar isso via software e que possa ser embutido 
nos proximos releasaes do asterisk, considero uma boa ideia.


Att,

Allan

----- Original Message ----- 
From: "alexandre - aldeia digital" <alepaes em ad2.com.br>
To: <asteriskbrasil em listas.asteriskbrasil.org>
Sent: Tuesday, May 09, 2006 10:28 AM
Subject: Re: [AsteriskBrasil] Sobre identificador de chamadas DTMF no X100P 
e clones


Salve,

Se você procurar no histórico da lista, verá várias mensagens minhas
sobre o assunto.

A solução do problema perece ser simples, mas só para quem conhece as
nuances do dsp.c.

Nosso CallerID é idêntico ao da Dinamarca (DTMF antes do ring). O que
ocorre é que nosso sample é muito "alto" e geralmente ruidoso.

Se for feita a normalização da amostragem, o DTMF é identificado. O
problema é que essa normalização não existe no dsp.c.

Cogitou-se na asterisk-users usar um histórico de samples (como um
buffer), para que quando chegasse o ring, esses pacotes fossem agrupados
e normalizados, mas nada foi feito nesse sentido.

Qualquer coisa, estou a disposição para trocarmos umas idéias.

Abraços,


Alexandre
Aldeia Digital



Paulino Kenji Sato wrote:
> Alguem sabe como esta o suporte ao identificador de chamadas basendo
> em tons DTMF?
> Como o Brasileiro (BINA), que pelo que vi, e iqual ao Filandes ou
> Sueco(Sweden), ou seja, antes do primeiro toque, inicando com A e
> terminando com C.
>
> Independente do status de como anda isso oficialmente, a um tempo
> atraz sugeri uma 'gambiarra', que consistia em usar uma placa de som
> para escutar a linha e um software para decodificar o DTMF.
> Na epoca e ainda hoje, não tenho a indentificação de chama ativa na
> linha da BrasilTelecom.
> Só que, recentemente comprei um ATA Linksys PAP2, que gera CALLERID
> em varios formatos, bellcore (FSK) e os em DTMF, resolvi testar na
> prática a ideia, configurei o PAP2 para gerar o CALLID em DTMF
> (Finland/Sweden).
>
> Primeria coisa a fazer e interface com a linha telefonica, isso foi
> facilmente conseguido usando um optoacloplador e mais alguns
> componentes.
> O esquema se encontra no link abaixo.
> http://img204.imageshack.us/my.php?image=callerid0yb.png
>
> Não sei se a impendância do circuito esta alto o suficiente para não
> interferir no funcionamento normal do telefone.
>
> A saida do circuito e ligado na entrade de microfone da placa de som,
> essa entrada fornece uma tensão de polarização para o microfone de
> eletreto, nem todas as placas de som tem esse sinal, caso a placa não
> tenha, precisará ligar uma fonte de 5 a 9v (bateria) entre o pino 4 do
> Optoacloplador eo Resistor R2 no ponto onde deveria estar ligado oa
> plug.
>
> O próximo passo e arranjar um software para fazer a decodificação do
> DTMF, para isso usei o dtmfkit
> http://www.sephail.net/projects/dtmfkit/
>
> Fiz um patch nele para só mostrar o número identificado.
> A identificação as vezes falha, pegando só uma parte de número.
>
> Próximo passo a integrar isso de alguma forma ao Asterisk.
>
> *** patch ***
> --- dtmf_decode.c.orig 2006-05-09 00:59:09.000000000 -0300
> +++ dtmf_decode.c 2006-05-09 01:03:14.000000000 -0300
> @@ -240,9 +240,10 @@
>  int dtmf_decode_main(int fd, int sample_rate, int bits, int channels, int 
> mode,
>    int pct, int reqtwo) {
>
> -  unsigned char *buffer, *gbuffer;
> +  unsigned char *buffer, *gbuffer, *callid;
>    int bsize, ch, dch = ',', i, j, lch = ',', goertzel_n = -1,
> goertzel_rate = -1, pflag;
> -  int rlen, val;
> +  int rlen, val, it;
> +  it=0;
>
>    /* Pre-compute goertzel constants based on best N for the sample rate 
> */
>    for(i = 0; goertzel_N[i][RATE] != -1; i++) {
> @@ -283,7 +284,14 @@
>      perror("malloc()");
>      return(ERR_MALLOC_FAILED);
>    }
> -
> +
> +/* inicio */
> +  if((callid = malloc(256)) == NULL) {
> +    perror("malloc()");
> +    return(ERR_MALLOC_FAILED);
> +  }
> +/* fim */
> +
>    /* Process each read sample */
>    while((rlen = read(fd, buffer, bsize))) {
>
> @@ -321,14 +329,28 @@
>
>          /* Check dupe rule */
>          if((lch == ch && (mode & MODE_PRINT_DUPES)) || lch != ch) {
> -
> +          /*
>            printf("%c", ch);
> +          */
>            pflag = 1;
> -
> +/* inicio */
> +          if (ch=='A') {
> +             callid[0]=ch;
> +             it=1;
> +          } else {
> +             if (ch=='C') {
> +                callid[it]=ch;
> +                it++;
> +                callid[it]='\0';
> +                printf("CALLERID:%s\n", callid);
> +             } else {
> +                callid[it]=ch;
> +                it++;
> +             }
> +          }
> +/* fim */
>          }
> -
> -      }
> -
> +      }
>      }
>
>      /* Print newline (or not) if a character was printed */
> @@ -345,13 +367,14 @@
>      }
>      dch = ch;
>      pflag = 0;
> -
>    }
>
>    /* Free buffer memory */
>    free(buffer);
>    free(gbuffer);
> -
> +
> +  free(callid);
> +
>    return(0);
>
>  }
> *** fim ***
>
>
> --
> Paulino Kenji Sato
> http://www.nobel.com.br
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
> _______________________________________________
> Acesse o  wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
_______________________________________________
LIsta de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil

_______________________________________________
Acesse o  wiki AsteriskBrasil.org:
http://www.asteriskbrasil.org

E-mail classificado pelo Identificador de Spam Inteligente Terra.
Para alterar a categoria classificada, visite
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=zyryz&_l=1,1147181059.61442.23260.alcala.hst.terra.com.br,8583,Des15,Des15




Mais detalhes sobre a lista de discussão AsteriskBrasil