<div dir="ltr">Ola Rodrigo<div><br></div><div>O Asterisk a partir da versão 1.10 utiliza o Sqlite para o banco de dados interno, mas não sei como acessar a partir do Dialplan. Eu tenho um 1.8 rodando, olha as applications dele no final do e-mail.</div><div><br></div><div>Acho que voce tem 3 caminhos a escolher:</div><div>1) Achar uma forma de gravar direto pelo dialplan (Se existir)</div><div>2) Desenvolver um módulo em C para o Asterisk, com as funções que voce precisa. (Demorado, complexo)</div><div>3) Usa AGI </div><div><br></div><div>Antes de investir no banco, descobre como fazer isso. Se não já muda logo a estratégia.</div><div><br></div><div>Abraço</div><div>--</div><div><br></div><div><br></div><div><div>Connected to Asterisk 1.8.31.0 currently running on pbx (pid = 9033)</div><div>pbx*CLI&gt; core show applications<br></div><div>    -= Registered Asterisk Applications =-</div><div>        AddQueueMember: Dynamically adds queue members.</div><div>              ADSIProg: Load Asterisk ADSI Scripts into phone</div><div>                AELSub: Launch subroutine built with AEL</div><div>            AgentLogin: Call agent login.</div><div>  AgentMonitorOutgoing: Record agent&#39;s outgoing call.</div><div>                   AGI: Executes an AGI compliant application.</div><div>         AlarmReceiver: Provide support for receiving alarm reports from a burglar or fire alarm panel.</div><div>                   AMD: Attempt to detect answering machines.</div><div>                Answer: Answer a channel if ringing.</div><div>          Authenticate: Authenticate a user</div><div>            BackGround: Play an audio file while waiting for digits of an extension to go to.</div><div>      BackgroundDetect: Background a file with talk detect.</div><div>                Bridge: Bridge two channels.</div><div>                  Busy: Indicate the Busy condition.</div><div>  CallCompletionCancel: Cancel call completion service</div><div>  CallCompletionRequest: Request call completion service for previous call</div><div>       CELGenUserEvent: Generates a CEL User Defined Event.</div><div>         ChangeMonitor: Change monitoring filename of a channel.</div><div>           ChanIsAvail: Check channel availability</div><div>       ChannelRedirect: Redirects given channel to a dialplan target</div><div>               ChanSpy: Listen to a channel, and optionally whisper into it.</div><div>             ClearHash: Clear the keys from a specified hashname.</div><div>            ConfBridge: Conference bridge application.</div><div>            Congestion: Indicate the Congestion condition.</div><div>         ContinueWhile: Restart a While loop.</div><div>       ControlPlayback: Play a file with fast forward and rewind.</div><div>            DAHDIBarge: Barge in (monitor) DAHDI channel.</div><div>              DAHDIRAS: Executes DAHDI ISDN RAS application.</div><div>             DAHDIScan: Scan DAHDI channels to monitor calls.</div><div>  DAHDISendCallreroutingFacility: Send an ISDN call rerouting/deflection facility message.</div><div>  DAHDISendKeypadFacility: Send digits out of band over a PRI.</div><div>              DateTime: Says a specified time in a custom format.</div><div>                 DBdel: Delete a key from the asterisk database.</div><div>             DBdeltree: Delete a family or keytree from the asterisk database.</div><div>               DeadAGI: Executes AGI on a hungup channel.</div><div>                  Dial: Attempt to connect to another device or endpoint and bridge the call.</div><div>               Dictate: Virtual Dictation Machine.</div><div>             Directory: Provide directory of voicemail extensions.</div><div>                  DISA: Direct Inward System Access.</div><div>              DumpChan: Dump Info About The Calling Channel.</div><div>                  EAGI: Executes an EAGI compliant application.</div><div>                  Echo: Echo media, DTMF back to the calling party</div><div>              EndWhile: End a while loop.</div><div>                  Exec: Executes dialplan application.</div><div>                ExecIf: Executes dialplan application, conditionally.</div><div>            ExecIfTime: Conditional application execution based on the current time.</div><div>             ExitWhile: End a While loop.</div><div>              ExtenSpy: Listen to a channel, and optionally whisper into it.</div><div>           ExternalIVR: Interfaces with an external IVR application.</div><div>              Festival: Say text to the user.</div><div>                 Flash: Flashes a DAHDI Trunk.</div><div>              FollowMe: Find-Me/Follow-Me application.</div><div>               ForkCDR: Forks the Call Data Record.</div><div>              GetCPEID: Get ADSI CPE ID.</div><div>                 Gosub: Jump to label, saving return address.</div><div>               GosubIf: Conditionally jump to label, saving return address.</div><div>                  Goto: Jump to a particular priority, extension, or context.</div><div>                GotoIf: Conditional goto.</div><div>            GotoIfTime: Conditional Goto based on the current time.</div><div>                Hangup: Hang up the calling channel.</div><div>         IAX2Provision: Provision a calling IAXy with a given template.</div><div>                  ICES: Encode and stream using &#39;ices&#39;.</div><div>             ImportVar: Import a variable from a channel into a new variable.</div><div>            Incomplete: Returns AST_PBX_INCOMPLETE value.</div><div>                   Log: Send arbitrary text to a selected log level.</div><div>                 Macro: Macro Implementation.</div><div>        MacroExclusive: Exclusive Macro Implementation.</div><div>             MacroExit: Exit from Macro.</div><div>               MacroIf: Conditional Macro implementation.</div><div>         MailboxExists: Check to see if Voicemail mailbox exists.</div><div>                MeetMe: MeetMe conference bridge.</div><div>           MeetMeAdmin: MeetMe conference administration.</div><div>    MeetMeChannelAdmin: MeetMe conference Administration (channel specific).</div><div>           MeetMeCount: MeetMe participant count.</div><div>             Milliwatt: Generate a Constant 1004Hz tone at 0dbm (mu-law).</div><div>         MinivmAccMess: Record account specific messages.</div><div>          MinivmDelete: Delete Mini-Voicemail voicemail messages.</div><div>           MinivmGreet: Play Mini-Voicemail prompts.</div><div>             MinivmMWI: Send Message Waiting Notification to subscriber(s) of mailbox.</div><div>          MinivmNotify: Notify voicemail owner about new messages.</div><div>          MinivmRecord: Receive Mini-Voicemail and forward via e-mail.</div><div>            MixMonitor: Record a call and mix the audio during the recording.  Use of StopMixMonitor is required to guarantee the audio file is available for processing during dialplan execution.</div><div>               Monitor: Monitor a channel.</div><div>             Morsecode: Plays morse code.</div><div>             MP3Player: Play an MP3 file or M3U playlist file or stream.</div><div>                  MSet: Set channel variable(s) or function value(s).</div><div>           MusicOnHold: Play Music On Hold indefinitely.</div><div>                NBScat: Play an NBS local stream.</div><div>                 NoCDR: Tell Asterisk to not maintain a CDR for the current call</div><div>                  NoOp: Do Nothing (No Operation).</div><div>           ODBC_Commit: Commits a currently open database transaction.</div><div>         ODBC_Rollback: Rollback a currently open database transaction.</div><div>            ODBCFinish: Clear the resultset of a sucessful multirow query.</div><div>             Originate: Originate a call.</div><div>                  Page: Page series of phones</div><div>                  Park: Park yourself.</div><div>       ParkAndAnnounce: Park and Announce.</div><div>            ParkedCall: Retrieve a parked call.</div><div>          PauseMonitor: Pause monitoring of a channel.</div><div>      PauseQueueMember: Pauses a queue member.</div><div>                Pickup: Directed extension call pickup.</div><div>            PickupChan: Pickup a ringing channel.</div><div>              Playback: Play a file.</div><div>             PlayTones: Play a tone list.</div><div>        PrivacyManager: Require phone number to be entered, if no CallerID sent</div><div>            Proceeding: Indicate proceeding.</div><div>              Progress: Indicate progress.</div><div>                 Queue: Queue a call for a call queue.</div><div>              QueueLog: Writes to the queue_log file.</div><div>        RaiseException: Handle an exceptional condition.</div><div>                  Read: Read a variable.</div><div>             ReadExten: Read an extension into a variable.</div><div>              ReadFile: Read the contents of a text file into a channel variable.</div><div>            ReceiveFAX: Receive a FAX and save as a TIFF/F file.</div><div>                Record: Record to a file.</div><div>     RemoveQueueMember: Dynamically removes queue members.</div><div>              ResetCDR: Resets the Call Data Record.</div><div>             RetryDial: Place a call, retrying on failure allowing an optional exit extension.</div><div>                Return: Return from gosub routine.</div><div>               Ringing: Indicate ringing tone.</div><div>              SayAlpha: Say Alpha.</div><div>             SayDigits: Say Digits.</div><div>             SayNumber: Say Number.</div><div>           SayPhonetic: Say Phonetic.</div><div>           SayUnixTime: Says a specified time in a custom format.</div><div>              SendDTMF: Sends arbitrary DTMF digits</div><div>               SendFAX: Sends a specified TIFF/F file as a FAX.</div><div>             SendImage: Sends an image file.</div><div>              SendText: Send a Text Message.</div><div>               SendURL: Send a URL.</div><div>                   Set: Set channel variable or function value.</div><div>           SetAMAFlags: Set the AMA Flags.</div><div>         SetCallerPres: Set CallerID Presentation.</div><div>        SetMusicOnHold: Set default Music On Hold class.</div><div>          SIPAddHeader: Add a SIP header to the outbound call.</div><div>           SIPDtmfMode: Change the dtmfmode for a SIP call.</div><div>       SIPRemoveHeader: Remove SIP headers previously added with SIPAddHeader</div><div>            SLAStation: Shared Line Appearance Station.</div><div>              SLATrunk: Shared Line Appearance Trunk.</div><div>                   SMS: Communicates with SMS service centres and SMS capable analogue phones.</div><div>            SoftHangup: Hangs up the requested channel.</div><div>  SpeechActivateGrammar: Activate a grammar.</div><div>      SpeechBackground: Play a sound file and wait for speech to be recognized.</div><div>          SpeechCreate: Create a Speech Structure.</div><div>  SpeechDeactivateGrammar: Deactivate a grammar.</div><div>         SpeechDestroy: End speech recognition.</div><div>     SpeechLoadGrammar: Load a grammar.</div><div>  SpeechProcessingSound: Change background processing sound.</div><div>           SpeechStart: Start recognizing voice in the audio stream.</div><div>   SpeechUnloadGrammar: Unload a grammar.</div><div>              StackPop: Remove one address from gosub stack.</div><div>      StartMusicOnHold: Play Music On Hold.</div><div>        StopMixMonitor: Stop recording a call through MixMonitor, and free the recording&#39;s file handle.</div><div>           StopMonitor: Stop monitoring a channel.</div><div>       StopMusicOnHold: Stop playing Music On Hold.</div><div>         StopPlayTones: Stop playing a tone list.</div><div>                System: Execute a system command.</div><div>            TestClient: Execute Interface Test Client.</div><div>            TestServer: Execute Interface Test Server.</div><div>              Transfer: Transfer caller to remote extension.</div><div>               TryExec: Executes dialplan application, always returning.</div><div>             TrySystem: Try executing a system command.</div><div>        UnpauseMonitor: Unpause monitoring of a channel.</div><div>    UnpauseQueueMember: Unpauses a queue member.</div><div>             UserEvent: Send an arbitrary event to the manager interface.</div><div>               Verbose: Send arbitrary text to verbose output.</div><div>        VMAuthenticate: Authenticate with Voicemail passwords.</div><div>             VMSayName: Play the name of a voicemail user</div><div>             VoiceMail: Leave a Voicemail message.</div><div>         VoiceMailMain: Check Voicemail messages.</div><div>                  Wait: Waits for some time.</div><div>             WaitExten: Waits for an extension to be entered.</div><div>          WaitForNoise: Waits for a specified amount of noise.</div><div>           WaitForRing: Wait for Ring Application.</div><div>        WaitForSilence: Waits for a specified amount of silence.</div><div>       WaitMusicOnHold: Wait, playing Music On Hold.</div><div>             WaitUntil: Wait (sleep) until the current time is the given epoch.</div><div>                 While: Start a while loop.</div><div>            Zapateller: Block telemarketers with SIT.</div><div>    -= 179 Applications Registered =-</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-07-07 11:56 GMT-03:00 Rodrigo Pimenta Carvalho <span dir="ltr">&lt;<a href="mailto:pimenta@inatel.br" target="_blank">pimenta@inatel.br</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Prezado Daniel Zanutti.<br>
<br>
Bom dia.<br>
<br>
Muito obrigado por sua atenção.<br>
<br>
Estou num projeto com uma equipe de desenvolvedores onde cada um tem um papel específico e o meu no momento é de apenas investigar quais soluções iremos/poderemos adotar.<br>
Por exemplo, já decidimos que não iremos usar AGI dessa vez, porque nosso sistema, com Asterisk, será embarcado num hardware com limitação de recursos. Mas, nada nos impede de voltar nesse assunto e analisar o custo-benefício de usar AGI.<br>
<br>
Inicialmente estive planejando acessar o banco de dados diretamente do dial plan. Nessa visão, estou pesquisando sobre as possibilidades.<br>
Se ficarmos mesmo com a solução sem AGI, é possível acessar SQLite via o dial plan também, mas usar uma tabela proprietária? Ou seja, no meu caso não estou interessado em salvar dados de CDR.<br>
<br>
Eu também gosto da  abordagem de problema-solução e nossa equipe tem a lista de problemas/riscos a serem eliminados. Para tal, inicialmente investigarei as possibilidades em teoria. Depois testarei meus entendimentos através de protótipos. Aí sim poderei fazer perguntas mais específicas aqui nessa lista. Mas, até agora sou iniciante nesse assunto e então estou procurando os caminhos a seguir. Estou tentando ter uma ideia geral e inicial sobre as capacidades que o Asterisk pode nos oferecer. O meu primeiro passo foi ler a Wiki oficial do Asterisk.<br>
<br>
Não quero dar passos largos. Apenas curtos. Então vou continuar nessa investigação de uso de banco de dados. O próximo passo será usar um softphone proprietário nosso, feito em C, a partir do PJSIP. Como softphone faremos uma ligação ao Asteriski, que deverá salvar dado no banco de dados, via dial plan. Ou seja, a requisição de salvar dados chegará ao Asterisk via mensagem SIP.<br>
<br>
Daniel, por favor, faça suas críticas sobre meus comentários. Qualquer dica ou crítica será de grade valor.<br>
<br>
P.S.: não estou conseguindo receber as respostas dessa lista no meu inbox. Estou conseguindo apenas criar novos posts. Para ver as respostas, estou acessando a página <a href="http://asteriskbrasil.org/pipermail/asteriskbrasil/2015-July" rel="noreferrer" target="_blank">http://asteriskbrasil.org/pipermail/asteriskbrasil/2015-July</a> .<br>
         Ainda não descobri o motivo disso, mas já pedi o pessoal do suporte na minha empresa investigar.<br>
<br>
Muito obrigado.<br>
<span class=""><br>
RODRIGO PIMENTA CARVALHO<br>
Inatel Competence Center<br>
Software<br>
</span>Ph: <a href="tel:%2B55%2035%203471%209200" value="+553534719200">+55 35 3471 9200</a> RAMAL 979  (Brasil)<br>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
<span class=""><br>
Ola Rodrigo<br>
<br>
Posso estar errado, mas me parece que voce esta dando um passo muito largo.<br>
Voce já definiu a linguagem de programação que utilizará na sua aplicação<br>
de backend?<br>
<br>
Em teoria qualquer banco de dados pode ser acesso no Asterisk utilizando<br>
AGI, pois este suporta algumas nativamente e outras através de ODBC.<br>
<br>
Pelo que entendi voce está só estudando e eu acho esta uma abordagem mais<br>
difícil. Eu prefiro a abordagem de problema-solução, encontre os problemas<br>
que voce precisa resolver, enumere eles e verifique se o banco de dados<br>
consegue resolver todos eles. Se não consegue, posta aqui um caso e te<br>
ajudamos.<br>
<br>
No geral é pesar custo x benefício de cada solução.<br>
<br>
Abraço<br>
<br>
</span>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
________________________________________<br>
De: Rodrigo Pimenta Carvalho<br>
Enviado: terça-feira, 7 de julho de 2015 9:55<br>
Para: <a href="mailto:asteriskbrasil@listas.asteriskbrasil.org">asteriskbrasil@listas.asteriskbrasil.org</a><br>
Assunto: Qual opção correta: SQLite, MySQL ou o builtin database?<br>
<div class="HOEnZb"><div class="h5"><br>
Olá Pessoal.<br>
<br>
Bom dia.<br>
<br>
Estive pesquisando sobre como usar banco de dados acoplado ao Asterisk. Estudei a wiki do Asterisk, o site Voip-Info.org e vi 1 video no youtube sobre o assunto.<br>
<br>
Nos temos um builtin database no Asterisk, o qual pode ser usado para armazenar dados e recuperá-los. Os comandos  são:<br>
<br>
DB_DELETE,  DB e DB_EXISTS. Nesse banco podemos registrar informações no estilo do Windows Register.<br>
<br>
Além disso, podemos também fazer uso do MySQL, usando o comando DBQuery, que permite executar queries no database e obter o resultado.<br>
Por último, existe a possibilidade de usar o SQLite, por exemplo para arquivar dados de CDR.<br>
<br>
No meu caso, eu preciso arquivar dados no banco de dados, que não de CDR, mas de atributos de elementos na minha rede. Ex: IP de uma câmera de video, porta, etc. Isso será necessário, porque aplicações a serem feitas para smartphones, no meu projeto, precisarão obter essas informações via mensagens SIP. Ou seja, preciso criar uma solução onde o meu Dialplan irá executar queries num banco de dados e colocar as informações obtidas em cabeçalhos de mensagens SIP a serem retornadas para as aplicações nos smartphones.<br>
<br>
Nesse caso, tenho as seguintes dúvidas:<br>
<br>
   Para arquivar informações simples, como atributos e valores, qual seria a melhor/correta opção de banco de dados a usar, pensando em facilidade de configuração e programação?<br>
<br>
   No asterisk, é possível usar um desses bancos de dados para arquivar informação que não exatamente relacionada com uma call, como eu quero fazer?<br>
<br>
<br>
Caso alguém já tenha usado um desses bancos, por favor, comente sobre facilidade de uso do mesmo. Com as percepções obtidas aqui, eu poderei decidir melhor sobre qual das 3 opções eu continuarei aprofundando meus estudos.<br>
Ainda não sei qual a opção mais adequada, já que ainda não trabalhei com banco de dados e Asterisk.<br>
<br>
Muito obrigado por qualquer dica!<br>
<br>
Abs.<br>
<br>
<br>
<br>
<br>
<br>
RODRIGO PIMENTA CARVALHO<br>
Inatel Competence Center<br>
Software<br>
Ph: <a href="tel:%2B55%2035%203471%209200" value="+553534719200">+55 35 3471 9200</a> RAMAL 979<br>
_______________________________________________<br>
WORKOFFEE PORTO ALEGRE da Khomp acontecerá no dia 7/07,<br>
no Hotel Quality. Faça já sua inscrição em <a href="http://workoffee.com.br" rel="noreferrer" target="_blank">workoffee.com.br</a><br>
e  venha conhecer os lançamentos do portfólio da Khomp em<br>
primeira mão. Inscrições GRATUITAS.<br>
_______________________________________________<br>
DIGIVOICE: Fabricante pioneiro em Banco de Canais e Placas E1, GSM, FXO e FXS para Asterisk e Elastix. Temos Cursos de Telefonia IP e Asterisk.<br>
Construa soluções de PABX IP com produtos DigiVoice - visite  <a href="http://www.digivoice.com.br" rel="noreferrer" target="_blank">www.digivoice.com.br</a><br>
_______________________________________________<br>
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a><br>
</div></div></blockquote></div><br></div>