Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalacao_do_asterisk_11_no_debian_wheezy_pt_br [2019/08/08 15:23] (current)
Line 1: Line 1:
 +====== Instalação do Asterisk 11 no Debian Wheezy ======
  
 +
 +E ai galera, aqui eu vou abordar a instalação do Asterisk 11 no Debian Wheezy.
 +
 +O que vamos instalar:
 +  * Asterisk: Contém aplicações, funções, canais de comunicação e todas as funcionalidades que formam o Asterisk. É o software propriamente dito
 +  * DAHDI: Digium Asterisk Hardware Device Interface: Contém os drivers para todas as placas de comunicação da Digium, ou seus clones
 +  * LibPRI: Biblioteca responsável pela sinalização ISDN/PRI. Só é necessária a sua instalação caso seja utilizada uma placa de comunicação digital E1/T1 e sinalização ISDN/PRI
 +
 +**OBS:**
 +  * O pacote **Asterisk-AddOns** foi incorporado ao pacote principal do Asterisk
 +  * O pacote **LibSS7** foi incorporado ao código do Asterisk em 2010, a partir da versão 1.6.2
 +  * O pacote **LibOpenR2** Foi incorporado ao código do Asterisk em 2010, a partir da versão 1.6.2
 +
 +Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialwheezy_en para que não falte nenhum pacote ou configuração.
 +
 +
 +Agora vamos acessar o diretório que vai armazenar os fontes
 +<sxh bash>
 +cd /usr/src
 +</sxh>
 +
 +Agora vamos os fontes necesários
 +<sxh bash>
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/Asterisk/dahdi-linux-complete-current.tar.gz
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/Asterisk/libpri-1.4-current.tar.gz
 +wget -c http://wiki.douglasqsantos.com.br/Downloads/Asterisk/asterisk-11-current.tar.gz
 +</sxh>
 +
 +A partir da versão 1.6.1.0 do Asterisk, um script que verifica e/ou instala as dependências necessárias para o seu sistema operacional acompanha o pacote de arquivos do Asterisk. O script está localizado na pasta contrib/scripts.
 +
 +Vamos então desempacotar o Asterisk 
 +<sxh bash>
 +tar -xzvf asterisk-11-current.tar.gz
 +</sxh>
 +
 +Agora vamos mandar instalar as suas dependências, se for questionado sobre algo somente pressione ENTER
 +<sxh bash>
 +/usr/src/asterisk-11.6.0/contrib/scripts/install_prereq install
 +</sxh>
 +
 +Agora vamos instalar alguns pacotes adicionais para o nosso Asterisk
 +<sxh bash>
 +aptitude install libgmime-2.6-0 libgmime-2.6-dev libsrtp0 libsrtp0-dev libkqueue-dev libkqueue0 libiksemel-dev \
 + libbison-dev flex linux-headers-$(uname -r) subversion -y
 +</sxh>
 +
 +Agora vamos acessar o diretório dos fontes
 +<sxh bash>
 +cd /usr/src
 +</sxh>
 +
 +Agora vamos desempacotar o dahdi
 +<sxh bash>
 +tar -xzvf dahdi-linux-complete-current.tar.gz
 +</sxh>
 +
 +Agora vamos acessar o diretório para a instalação
 +<sxh bash>
 +cd dahdi-linux-complete*
 +</sxh>
 +
 +Agora vamos mandar compilar e instalar ele
 +<sxh bash>
 +make && make install && make config && make clean
 +</sxh>
 +
 +Agora vamos acessar o diretório dos fontes
 +<sxh bash>
 +cd /usr/src
 +</sxh>
 +
 +Agora vamos desempacotar o libpri
 +<sxh bash>
 +tar -xzvf libpri-1.4-current.tar.gz
 +</sxh>
 +
 +Agora vamos acessar o diretório dos fontes
 +<sxh bash>
 +cd libpri-*
 +</sxh>
 +
 +Agora vamos mandar compilar e instalar
 +<sxh bash>
 +make && make install && make clean
 +</sxh>
 +
 +Agora vamos acessar o diretório fonte do asterisk
 +<sxh bash>
 +cd /usr/src/asterisk-*
 +</sxh>
 +
 +Agora vamos chegar os pre-requisitos para a compilação
 +<sxh bash>
 +./configure
 +</sxh>
 +
 +Agora vamos mandar compilar e instalar o asterisk e arquivos de configuração e inicialização
 +<sxh bash>
 +make && make install && make config && make install-logrotate && make samples && make clean
 +</sxh>
 +
 +Agora vamos inicializar controlador de módulos para as placas Digium
 +<sxh bash>
 +/etc/init.d/dahdi start
 +</sxh>
 +
 +Agora vamos inicializar o Asterisk
 +<sxh bash>
 +/etc/init.d/asterisk start
 +</sxh>
 +
 +Agora vamos consultar o status do Asterisk
 +<sxh bash>
 +/etc/init.d/asterisk status
 +[ ok ] asterisk is running.
 +</sxh>
 +
 +Agora vamos inserir o Asterisk e o Dahdi na inicialização do sistema
 +<sxh bash>
 +insserv -f -v asterisk
 +insserv -f -v dahdi
 +</sxh>
 +====== Command Line ======
 +
 +Agora vamos acessar o console do Asterisk
 +<sxh bash>
 +rasterisk -Tvvv
 +[Dec 11 22:21:43] Asterisk 11.6.0, Copyright (C) 1999 - 2013 Digium, Inc. and others.
 +[Dec 11 22:21:43] Created by Mark Spencer <markster@digium.com>
 +[Dec 11 22:21:43] Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +[Dec 11 22:21:43] This is free software, with components licensed under the GNU General Public
 +[Dec 11 22:21:43] License version 2 and other licenses; you are welcome to redistribute it under
 +[Dec 11 22:21:43] certain conditions. Type 'core show license' for details.
 +[Dec 11 22:21:43] =========================================================================
 +[Dec 11 22:21:43] Connected to Asterisk 11.6.0 currently running on asterisk-centos (pid = 950)
 +asterisk-centos*CLI> 
 +asterisk-centos*CLI> quit
 +[Dec 11 22:22:02] Asterisk cleanly ending (0).
 +[Dec 11 22:22:02] Executing last minute cleanups
 +</sxh>
 +
 +Agora vamos listar as aplicações disponíveis para serem usadas no plano de discagem do asterisk
 +<sxh bash>
 +rasterisk -rx "core show applications"
 +    -= Registered Asterisk Applications =-
 +        AddQueueMember: Dynamically adds queue members. 
 +              ADSIProg: Load Asterisk ADSI Scripts into phone 
 +                AELSub: Launch subroutine built with AEL 
 +            AgentLogin: Call agent login. 
 +  AgentMonitorOutgoing: Record agent's outgoing call. 
 +                   AGI: Executes an AGI compliant application. 
 +         AlarmReceiver: Provide support for receiving alarm reports from a burglar or fire alarm panel. 
 +                   AMD: Attempt to detect answering machines. 
 +                Answer: Answer a channel if ringing. 
 +          Authenticate: Authenticate a user 
 +            BackGround: Play an audio file while waiting for digits of an extension to go to. 
 +      BackgroundDetect: Background a file with talk detect. 
 +                Bridge: Bridge two channels. 
 +                  Busy: Indicate the Busy condition. 
 +  CallCompletionCancel: Cancel call completion service 
 +  CallCompletionRequest: Request call completion service for previous call 
 +       CELGenUserEvent: Generates a CEL User Defined Event. 
 +         ChangeMonitor: Change monitoring filename of a channel. 
 +           ChanIsAvail: Check channel availability 
 +       ChannelRedirect: Redirects given channel to a dialplan target 
 +               ChanSpy: Listen to a channel, and optionally whisper into it. 
 +             ClearHash: Clear the keys from a specified hashname. 
 +            ConfBridge: Conference bridge application. 
 +            Congestion: Indicate the Congestion condition. 
 +         ContinueWhile: Restart a While loop. 
 +       ControlPlayback: Play a file with fast forward and rewind. 
 +              DAHDIRAS: Executes DAHDI ISDN RAS application. 
 +             DAHDIScan: Scan DAHDI channels to monitor calls. 
 +  DAHDISendCallreroutingFacility: Send an ISDN call rerouting/deflection facility message. 
 +  DAHDISendKeypadFacility: Send digits out of band over a PRI. 
 +              DateTime: Says a specified time in a custom format. 
 +                 DBdel: Delete a key from the asterisk database. 
 +             DBdeltree: Delete a family or keytree from the asterisk database. 
 +               DeadAGI: Executes AGI on a hungup channel. 
 +                  Dial: Attempt to connect to another device or endpoint and bridge the call. 
 +               Dictate: Virtual Dictation Machine. 
 +             Directory: Provide directory of voicemail extensions. 
 +                  DISA: Direct Inward System Access. 
 +              DumpChan: Dump Info About The Calling Channel. 
 +                  EAGI: Executes an EAGI compliant application. 
 +                  Echo: Echo media, DTMF back to the calling party 
 +              EndWhile: End a while loop. 
 +                  Exec: Executes dialplan application. 
 +                ExecIf: Executes dialplan application, conditionally. 
 +            ExecIfTime: Conditional application execution based on the current time. 
 +             ExitWhile: End a While loop. 
 +              ExtenSpy: Listen to a channel, and optionally whisper into it. 
 +           ExternalIVR: Interfaces with an external IVR application. 
 +              Festival: Say text to the user. 
 +                 Flash: Flashes a DAHDI Trunk. 
 +              FollowMe: Find-Me/Follow-Me application. 
 +               ForkCDR: Forks the Call Data Record. 
 +              GetCPEID: Get ADSI CPE ID. 
 +                 Gosub: Jump to label, saving return address. 
 +               GosubIf: Conditionally jump to label, saving return address. 
 +                  Goto: Jump to a particular priority, extension, or context. 
 +                GotoIf: Conditional goto. 
 +            GotoIfTime: Conditional Goto based on the current time. 
 +                Hangup: Hang up the calling channel. 
 +      HangupCauseClear: Clears hangup cause information from the channel that is available through HANGUPCAUSE. 
 +         IAX2Provision: Provision a calling IAXy with a given template. 
 +                  ICES: Encode and stream using 'ices'
 +             ImportVar: Import a variable from a channel into a new variable. 
 +            Incomplete: Returns AST_PBX_INCOMPLETE value. 
 +            JabberJoin: Join a chat room 
 +           JabberLeave: Leave a chat room 
 +            JabberSend: Sends an XMPP message to a buddy. 
 +       JabberSendGroup: Send a Jabber Message to a specified chat room 
 +          JabberStatus: Retrieve the status of a jabber list member 
 +                   Log: Send arbitrary text to a selected log level. 
 +                 Macro: Macro Implementation. 
 +        MacroExclusive: Exclusive Macro Implementation. 
 +             MacroExit: Exit from Macro. 
 +               MacroIf: Conditional Macro implementation. 
 +         MailboxExists: Check to see if Voicemail mailbox exists. 
 +           MessageSend: Send a text message. 
 +             Milliwatt: Generate a Constant 1004Hz tone at 0dbm (mu-law). 
 +         MinivmAccMess: Record account specific messages. 
 +          MinivmDelete: Delete Mini-Voicemail voicemail messages. 
 +           MinivmGreet: Play Mini-Voicemail prompts. 
 +             MinivmMWI: Send Message Waiting Notification to subscriber(s) of mailbox. 
 +          MinivmNotify: Notify voicemail owner about new messages. 
 +          MinivmRecord: Receive Mini-Voicemail and forward via e-mail. 
 +            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. 
 +               Monitor: Monitor a channel. 
 +             Morsecode: Plays morse code. 
 +             MP3Player: Play an MP3 file or M3U playlist file or stream. 
 +                  MSet: Set channel variable(s) or function value(s). 
 +           MusicOnHold: Play Music On Hold indefinitely. 
 +                NBScat: Play an NBS local stream. 
 +                 NoCDR: Tell Asterisk to not maintain a CDR for the current call 
 +                  NoOp: Do Nothing (No Operation). 
 +           ODBC_Commit: Commits a currently open database transaction. 
 +         ODBC_Rollback: Rollback a currently open database transaction. 
 +            ODBCFinish: Clear the resultset of a sucessful multirow query. 
 +             Originate: Originate a call. 
 +                  Page: Page series of phones 
 +                  Park: Park yourself. 
 +       ParkAndAnnounce: Park and Announce. 
 +            ParkedCall: Retrieve a parked call. 
 +          PauseMonitor: Pause monitoring of a channel. 
 +      PauseQueueMember: Pauses a queue member. 
 +                Pickup: Directed extension call pickup. 
 +            PickupChan: Pickup a ringing channel. 
 +              Playback: Play a file. 
 +             PlayTones: Play a tone list. 
 +        PrivacyManager: Require phone number to be entered, if no CallerID sent 
 +            Proceeding: Indicate proceeding. 
 +              Progress: Indicate progress. 
 +                 Queue: Queue a call for a call queue. 
 +              QueueLog: Writes to the queue_log file. 
 +        RaiseException: Handle an exceptional condition. 
 +                  Read: Read a variable. 
 +             ReadExten: Read an extension into a variable. 
 +            ReceiveFAX: Receive a FAX and save as a TIFF/F file. 
 +                Record: Record to a file. 
 +     RemoveQueueMember: Dynamically removes queue members. 
 +              ResetCDR: Resets the Call Data Record. 
 +             RetryDial: Place a call, retrying on failure allowing an optional exit extension. 
 +                Return: Return from gosub routine. 
 +               Ringing: Indicate ringing tone. 
 +              SayAlpha: Say Alpha. 
 +             SayDigits: Say Digits. 
 +             SayNumber: Say Number. 
 +           SayPhonetic: Say Phonetic. 
 +           SayUnixTime: Says a specified time in a custom format. 
 +              SendDTMF: Sends arbitrary DTMF digits 
 +               SendFAX: Sends a specified TIFF/F file as a FAX. 
 +             SendImage: Sends an image file. 
 +              SendText: Send a Text Message. 
 +               SendURL: Send a URL. 
 +                   Set: Set channel variable or function value. 
 +           SetAMAFlags: Set the AMA Flags. 
 +        SetMusicOnHold: Set default Music On Hold class. 
 +          SIPAddHeader: Add a SIP header to the outbound call. 
 +           SIPDtmfMode: Change the dtmfmode for a SIP call. 
 +       SIPRemoveHeader: Remove SIP headers previously added with SIPAddHeader 
 +                   SMS: Communicates with SMS service centres and SMS capable analogue phones. 
 +            SoftHangup: Hangs up the requested channel. 
 +  SpeechActivateGrammar: Activate a grammar. 
 +      SpeechBackground: Play a sound file and wait for speech to be recognized. 
 +          SpeechCreate: Create a Speech Structure. 
 +  SpeechDeactivateGrammar: Deactivate a grammar. 
 +         SpeechDestroy: End speech recognition. 
 +     SpeechLoadGrammar: Load a grammar. 
 +  SpeechProcessingSound: Change background processing sound. 
 +           SpeechStart: Start recognizing voice in the audio stream. 
 +   SpeechUnloadGrammar: Unload a grammar. 
 +              StackPop: Remove one address from gosub stack. 
 +      StartMusicOnHold: Play Music On Hold. 
 +        StopMixMonitor: Stop recording a call through MixMonitor, and free the recording's file handle. 
 +           StopMonitor: Stop monitoring a channel. 
 +       StopMusicOnHold: Stop playing Music On Hold. 
 +         StopPlayTones: Stop playing a tone list. 
 +                System: Execute a system command. 
 +            TestClient: Execute Interface Test Client. 
 +            TestServer: Execute Interface Test Server. 
 +              Transfer: Transfer caller to remote extension. 
 +               TryExec: Executes dialplan application, always returning. 
 +             TrySystem: Try executing a system command. 
 +        UnpauseMonitor: Unpause monitoring of a channel. 
 +    UnpauseQueueMember: Unpauses a queue member. 
 +             UserEvent: Send an arbitrary event to the manager interface. 
 +               Verbose: Send arbitrary text to verbose output. 
 +        VMAuthenticate: Authenticate with Voicemail passwords. 
 +             VMSayName: Play the name of a voicemail user 
 +             VoiceMail: Leave a Voicemail message. 
 +         VoiceMailMain: Check Voicemail messages. 
 +      VoiceMailPlayMsg: Play a single voice mail msg from a mailbox by msg id. 
 +                  Wait: Waits for some time. 
 +             WaitExten: Waits for an extension to be entered. 
 +          WaitForNoise: Waits for a specified amount of noise. 
 +           WaitForRing: Wait for Ring Application. 
 +        WaitForSilence: Waits for a specified amount of silence. 
 +       WaitMusicOnHold: Wait, playing Music On Hold. 
 +             WaitUntil: Wait (sleep) until the current time is the given epoch. 
 +                 While: Start a while loop. 
 +            Zapateller: Block telemarketers with SIT. 
 +    -= 178 Applications Registered =-
 +</sxh>
 +
 +Agora vamos mostrar a descrição e a sintaxe de uma aplicação especifica
 +<sxh bash>
 +rasterisk -Tvvv
 +[Dec 11 22:23:04] Asterisk 11.6.0, Copyright (C) 1999 - 2013 Digium, Inc. and others.
 +[Dec 11 22:23:04] Created by Mark Spencer <markster@digium.com>
 +[Dec 11 22:23:04] Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +[Dec 11 22:23:04] This is free software, with components licensed under the GNU General Public
 +[Dec 11 22:23:04] License version 2 and other licenses; you are welcome to redistribute it under
 +[Dec 11 22:23:04] certain conditions. Type 'core show license' for details.
 +[Dec 11 22:23:04] =========================================================================
 +[Dec 11 22:23:04] Connected to Asterisk 11.6.0 currently running on asterisk-centos (pid = 950)
 +asterisk-centos*CLI> core show application answer
 +
 +  -= Info about application 'Answer' =- 
 +
 +[Synopsis]
 +Answer a channel if ringing. 
 +
 +[Description]
 +If the call has not been answered, this application will answer it. Otherwise,
 +it has no effect on the call.
 +
 +[Syntax]
 +Answer([delay][,nocdr])
 +
 +[Arguments]
 +delay
 +    Asterisk will wait this number of milliseconds before returning to
 +    the dialplan after answering the call.
 +nocdr
 +    Asterisk will send an answer signal to the calling phone, but will
 +    not set the disposition or answer time in the CDR for this call.
 +
 +[See Also]
 +Hangup()
 +asterisk-centos*CLI>
 +</sxh>
 +
 +Para mostar a lista de canis de comunicação ativos podemos executar o seguinte comando
 +<sxh bash>
 +asterisk-centos*CLI> core show channels
 +Channel              Location             State   Application(Data)             
 +0 active channels
 +0 active calls
 +0 calls processed
 +asterisk-centos*CLI> 
 +</sxh>
 +
 +Para obter mais informações sobre um canal de comunicação especifico podemos fazer da seguinte forma
 +<sxh bash>
 +asterisk*CLI> core show channel SIP/9003/094f83e1
 +[...]
 +</sxh>
 +
 +Mostrar informações sobre o tempo de transcoficação entre os codecs habilitados no Asterisk podemos fazer da seguinte forma
 +<sxh bash>
 +asterisk*CLI> core show translation
 +         Translation times between formats (in microseconds) for one second of data
 +          Source Format (Rows) Destination Format (Columns)
 +
 +            gsm  ulaw  alaw  g726 adpcm  slin lpc10 speex speex16  ilbc g726aal2  g722 slin16 testlaw speex32 slin12 slin24 slin32 slin44 slin48 slin96 slin192
 +      gsm     - 15000 15000 15000 15000  9000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +     ulaw 15000      9150 15000 15000  9000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +     alaw 15000  9150     - 15000 15000  9000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +     g726 15000 15000 15000     - 15000  9000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +    adpcm 15000 15000 15000 15000      9000 15000 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +     slin  6000  6000  6000  6000  6000      6000  6000   14000  6000     6000  8250   8000    6000   14000   8000   8000   8000   8000   8000   8000    8000
 +    lpc10 15000 15000 15000 15000 15000  9000     - 15000   23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +    speex 15000 15000 15000 15000 15000  9000 15000       23000 15000    15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +  speex16 23500 23500 23500 23500 23500 17500 23500 23500       - 23500    23500 15000   9000   23500   23000  17500  17000  17000  17000  17000  17000   17000
 +     ilbc 15000 15000 15000 15000 15000  9000 15000 15000   23000        15000 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 + g726aal2 15000 15000 15000 15000 15000  9000 15000 15000   23000 15000        - 17250  17000   15000   23000  17000  17000  17000  17000  17000  17000   17000
 +     g722 15600 15600 15600 15600 15600  9600 15600 15600   15000 15600    15600       9000   15600   23000  17500  17000  17000  17000  17000  17000   17000
 +   slin16 14500 14500 14500 14500 14500  8500 14500 14500    6000 14500    14500  6000      -   14500   14000   8500   8000   8000   8000   8000   8000    8000
 +  testlaw 15000 15000 15000 15000 15000  9000 15000 15000   23000 15000    15000 17250  17000         23000  17000  17000  17000  17000  17000  17000   17000
 +  speex32 23500 23500 23500 23500 23500 17500 23500 23500   23500 23500    23500 23500  17500   23500        17500  17500   9000  17000  17000  17000   17000
 +   slin12 14500 14500 14500 14500 14500  8500 14500 14500   14000 14500    14500 14000   8000   14500   14000      -   8000   8000   8000   8000   8000    8000
 +   slin24 14500 14500 14500 14500 14500  8500 14500 14500   14500 14500    14500 14500   8500   14500   14000   8500      -   8000   8000   8000   8000    8000
 +   slin32 14500 14500 14500 14500 14500  8500 14500 14500   14500 14500    14500 14500   8500   14500    6000   8500   8500      -   8000   8000   8000    8000
 +   slin44 14500 14500 14500 14500 14500  8500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500      -   8000   8000    8000
 +   slin48 14500 14500 14500 14500 14500  8500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500   8500      -   8000    8000
 +   slin96 14500 14500 14500 14500 14500  8500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500   8500   8500      -    8000
 +  slin192 14500 14500 14500 14500 14500  8500 14500 14500   14500 14500    14500 14500   8500   14500   14500   8500   8500   8500   8500   8500   8500       -
 +asterisk*CLI> 
 +</sxh>
 +
 +Para parar o asterisk podemos fazer da seguinte forma
 +<sxh bash>
 +asterisk-centos*CLI> core stop now
 +asterisk-centos*CLI> 
 +Disconnected from Asterisk server
 +[Dec 11 22:24:07] Asterisk cleanly ending (0).
 +[Dec 11 22:24:07] Executing last minute cleanups
 +</sxh>
 +
 +Podemos utilizar o restart da seguinte forma
 +<sxh bash>
 +asterisk*CLI> core restart now
 +asterisk*CLI> 
 +Disconnected from Asterisk server
 +[Dec 11 22:25:37] Asterisk cleanly ending (0).
 +[Dec 11 22:25:37] Executing last minute cleanups
 +</sxh>
 +
 +Podemos utilizar tambem ao invés de now no comando restart utilizarmos o gracefully que vai reiniciar o parar o asterisk depois de todas as chamadas terem sido encerradas e não permite o início de nenhuma nova chamada
 +<sxh bash>
 +asterisk*CLI> core restart gracefully
 +</sxh>
 +====== Asterisk-GUI ======
 +
 +Vamos acessar o diretório que vai armazenar os fontes
 +<sxh bash>
 +cd /usr/src
 +</sxh>
 +
 +Agora vamos obter os fontes
 +<sxh bash>
 +svn checkout http://svn.asterisk.org/svn/asterisk-gui/branches/2.0/ asterisk-gui
 +</sxh>
 +
 +Agora vamos acessar o diretório dos fontes
 +<sxh bash>
 +cd /usr/src/asterisk-gui
 +</sxh>
 +
 +Agora vamos checar os pre-requisitos do sistema
 +<sxh bash>
 +./configure
 +</sxh>
 +
 +Agora vamos mandar compilar e instalar ele
 +<sxh bash>
 +make && make install
 +</sxh>
 +
 +Agora vamos ajustar o acesso a interface web
 +<sxh bash>
 +vim /etc/asterisk/http.conf
 +[...]
 +[general]
 +[...]
 +enabled=yes
 +[...]
 +bindaddr=0.0.0.0
 +[...]
 +bindport=8088
 +[...]
 +prefix=asterisk
 +[...]
 +enablestatic=yes
 +</sxh>
 +
 +Agora vamos ajutar o usuário administrador da interface web
 +<sxh bash>
 +vim /etc/asterisk/manager.conf
 +[...]
 +[general]
 +enabled = yes
 +webenabled = yes
 +port = 5038
 +bindaddr = 0.0.0.0
 +[...]
 +[admin]
 +secret = admin
 +read = system,call,log,verbose,command,agent,config,read,write,originate
 +write = system,call,log,verbose,command,agent,config,read,write,originate
 +</sxh>
 +
 +Agora vamos reiniciar o Asterisk
 +<sxh bash>
 +/etc/init.d/asterisk restart
 +</sxh>
 +
 +Agora vamos mandar checar a configuração
 +<sxh bash>
 +cd /usr/src/asterisk-gui && make checkconfig
 + --- Checking Asterisk configuration to see if it will support the GUI ---
 +* Checking for http.conf: OK
 +* Checking for manager.conf: OK
 +* Checking if HTTP is enabled: OK
 +* Checking if HTTP static support is enabled: OK
 +* Checking if manager is enabled: OK
 +* Checking if manager over HTTP is enabled: OK
 + --- Everything looks good ---  
 + * GUI should be available at http://asterisk:8088/asterisk/static/config/index.html 
 +
 + * Note: If you have bindaddr=127.0.0.1 in /etc/asterisk/http.conf 
 +   you will only be able to visit it from the local machine. 
 +
 +   Example: http://localhost:8088/asterisk/static/config/index.html
 +
 + * The login and password should be an entry from /etc/asterisk/manager.conf
 +   which has 'config' permission in read and write.  For example:
 +
 +    [admin]
 +    secret = mysecret49323
 +    read = system,call,log,verbose,command,agent,config
 +    write = system,call,log,verbose,command,agent,config
 +
 + --- Good luck! --- 
 +</sxh>
 +
 +Agora vamos acessar a interface http://ip_servidor:8088/asterisk/static/config/index.html aqui logue com o usuário admin e a senha admin, aqui vamos ser  questionados sobre algumas configurações somente confirme elas.
 +
 +Depois de logar vamos ter algo como abaixo:
 +
 +{{:asterisk-gui.png?500|}}
 +
 +====== Configuração básica de ramais e plano de discagem ======
 +
 +Vamos configurar 2 ramais SIP e 2 IAX2 para testes.
 +
 +OBS: Os comentários nestes arquivos são o ;
 +
 +Vamos fazer um backup do arquivo sip.conf e do iax.conf e já vamos fazer do extensions.conf aonde vamos criar o nosso plano de discagem.
 +<sxh bash>
 +cp -Rfa /etc/asterisk/sip.conf{,.bkp}
 +cp -Rfa /etc/asterisk/iax.conf{,.bkp}
 +cp -Rfa /etc/asterisk/extensions.conf{,.bkp}
 +</sxh>
 +
 +Agora vamos zerar estes arquivos
 +<sxh bash>
 +> /etc/asterisk/sip.conf
 +> /etc/asterisk/iax.conf
 +> /etc/asterisk/extensions.conf
 +</sxh>
 +
 +Vamos configurar os nossos ramais SIP
 +<sxh bash>
 +vim /etc/asterisk/sip.conf
 +[general]
 +;#Aonde o sip vai trabalhar ou seja qualquer interface do servidor
 +udpbindaddr = 0.0.0.0
 +;#Porta default do sip
 +bindport = 5060
 +;#Idioma que vamos utilizar por padrão 
 +language = en
 +;#Desabilitando todos os codecs
 +disallow = all
 +
 +;#Configurando os tamplates para os nossos ramais definimos um template utilizando o (!)
 +[opcoes-basicas](!)
 +;#Definindo o canal de comunicacao configurado.
 +host = dynamic
 +;#Especifica como que o asterisk vai pesquisar pelo cliente
 +type = friend
 +;#Contexto que vamos utilizar(plano de discagem)
 +context = ramais
 +
 +;#Template para o uso dos codecs alaw e ilbc
 +[codecs](!)
 +;#Desabilitando todos os codecs
 +disallow = all
 +;#Habilitando os codecs alaw e ilbc não pode haver espaço depois da virgula
 +allow = alaw,ilbc
 +
 +;#Template para a utilização somente do codec alaw herdando as configurações do template opcoes-basicas
 +[somente-alaw](!,opcoes-basicas)
 +;#Desabilita todos os codecs
 +disallow = all
 +;#Habilita o protocolo alaw
 +allow = alaw
 +
 +;#Configuração do ramal 9001 herdando as configurações dos templates opcoes-basicas e codecs
 +[9001](opcoes-basicas,codecs)
 +;#Definição de senha para o nosso ramal 9001
 +secret = senha01
 +;#Identificação deste ramal em uma ligação
 +callerid = Secretaria <9001>
 +
 +;#Configuração do ramal 9002 herdando a configuração do template somente-alaw
 +[9002](somente-alaw)
 +;#Definição de senha para o nosso ramal 9002
 +secret = senha02
 +;#Identificação deste ramal em uma ligação
 +callerid = Diretoria <9002>
 +</sxh>
 +
 +Agora vamos configurar os ramais IAX2
 +<sxh bash>
 +vim /etc/asterisk/iax.conf
 +[general]
 +;#Idioma que vamos utilizar por padrão
 +language = en
 +;#Desabilitando todos os codecs
 +disallow = all
 +
 +;#Configurando os tamplates para os nossos ramais definimos um template utilizando o (!)
 +[opcoes-basicas](!)
 +;#Definindo o canal de comunicacao configurado.
 +host = dynamic
 +;#Aqui vamos definir se o cliente IAX pode efetuar chamadar ser peer ou pode receber user ou ambos friend
 +type = friend
 +;#Contexto que vamos utilizar(plano de discagem)
 +context = ramais
 +
 +;#Template para o uso dos codecs
 +[codecs](!)
 +;#Desabilitando todos os codecs
 +disallow = all
 +;#Habilitando os codecs alaw e ilbc não pode haver espaço depois da virgula
 +allow = alaw,ilbc
 +
 +;#Template para a utilização somente do codec alaw herdando as configurações do template opcoes-basicas
 +[somente-alaw](!,opcoes-basicas)
 +;#Desabilita todos os codecs
 +disallow = all
 +;#Habilita o protocolo alaw
 +allow = alaw
 +
 +;#Configuração do ramal 9003 herdando as configurações dos templates opcoes-basicas e codecs
 +[9003](opcoes-basicas,codecs)
 +;#Definição de senha para o nosso ramal 9003
 +secret = senha03
 +;#Identificação deste ramal em uma ligação
 +callerid = Director <9003>
 +
 +;#Configuração do ramal 9004 herdando a configuração do template somente-alaw
 +[9004](somente-alaw)
 +;#Definição de senha para o nosso ramal 9004
 +secret = senha04
 +;#Identificação deste ramal em uma ligação
 +callerid = Secretary <9004>
 +</sxh>
 +
 +Agora no Asterisk vamos mandar ler as nossas novas configurações de SIP e do IAX
 +<sxh bash>
 +rasterisk -Tvvv
 +[Dec 15 11:21:07] Asterisk 11.6.0, Copyright (C) 1999 - 2013 Digium, Inc. and others.
 +[Dec 15 11:21:07] Created by Mark Spencer <markster@digium.com>
 +[Dec 15 11:21:07] Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
 +[Dec 15 11:21:07] This is free software, with components licensed under the GNU General Public
 +[Dec 15 11:21:07] License version 2 and other licenses; you are welcome to redistribute it under
 +[Dec 15 11:21:07] certain conditions. Type 'core show license' for details.
 +[Dec 15 11:21:07] =========================================================================
 +[Dec 15 11:21:07] Connected to Asterisk 11.6.0 currently running on asterisk (pid = 41650)
 +asterisk*CLI> sip reload
 + Reloading SIP
 +  == Parsing '/etc/asterisk/sip.conf': Found
 +  == Parsing '/etc/asterisk/users.conf': Found
 +  == Using SIP CoS mark 4
 +  == Parsing '/etc/asterisk/sip_notify.conf': Found
 +asterisk*CLI> iax2 reload
 +  == Parsing '/etc/asterisk/iax.conf': Found
 +  == Parsing '/etc/asterisk/users.conf': Found
 +asterisk*CLI> 
 +</sxh>
 +
 +Agora vamos mandar listar os nossos ramais SIP
 +<sxh bash>
 +asterisk*CLI> sip show peers
 +Name/username             Host                                    Dyn Forcerport ACL Port     Status      Description                      
 +9001                      (Unspecified)                            D                      Unmonitored                                  
 +9002                      (Unspecified)                            D                      Unmonitored                                  
 +2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 0 online, 2 offline]
 +</sxh>
 +
 +Agora vamos mandar listar os nossos ramais IAX2
 +<sxh bash>
 +asterisk*CLI> iax2 show peers
 +Name/Username    Host                 Mask             Port          Status      Description                     
 +9004             (null)          (D)  255.255.255.255  0             Unmonitored                                 
 +9003             (null)          (D)  255.255.255.255  0             Unmonitored                                 
 +2 iax2 peers [0 online, 0 offline, 2 unmonitored]
 +asterisk*CLI> 
 +</sxh>
 +
 +Se precisarmos obter mais informações de um determinado peer podemos fazer da seguinte forma se for SIP
 +<sxh bash>
 +asterisk*CLI> sip show peer 9001
 +
 +
 +  * Name       : 9001
 +  Description 
 +  Secret       : <Set>
 +  MD5Secret    : <Not set>
 +  Remote Secret: <Not set>
 +  Context      : ramais
 +  Record On feature : automon
 +  Record Off feature : automon
 +  Subscr.Cont. : <Not set>
 +  Language     : en
 +  Tonezone     : <Not set>
 +  AMA flags    : Unknown
 +  Transfer mode: open
 +  CallingPres  : Presentation Allowed, Not Screened
 +  Callgroup    : 
 +  Pickupgroup 
 +  Named Callgr : 
 +  Nam. Pickupgr: 
 +  MOH Suggest 
 +  Mailbox      : 
 +  VM Extension : asterisk
 +  LastMsgsSent : 0/0
 +  Call limit   : 0
 +  Max forwards : 0
 +  Dynamic      : Yes
 +  Callerid     : "Secretaria" <9001>
 +  MaxCallBR    : 384 kbps
 +  Expire       : -1
 +  Insecure     : no
 +  Force rport  : Auto (No)
 +  Symmetric RTP: No
 +  ACL          : No
 +  DirectMedACL : No
 +  T.38 support : No
 +  T.38 EC mode : Unknown
 +  T.38 MaxDtgrm: -1
 +  DirectMedia  : Yes
 +  PromiscRedir : No
 +  User=Phone   : No
 +  Video Support: No
 +  Text Support : No
 +  Ign SDP ver  : No
 +  Trust RPID   : No
 +  Send RPID    : No
 +  Subscriptions: Yes
 +  Overlap dial : Yes
 +  DTMFmode     : rfc2833
 +  Timer T1     : 500
 +  Timer B      : 32000
 +  ToHost       : 
 +  Addr->IP     : (null)
 +  Defaddr->IP  : (null)
 +  Prim.Transp. : UDP
 +  Allowed.Trsp : UDP
 +  Def. Username: 
 +  SIP Options  : (none)
 +  Codecs       : (alaw|ilbc)
 +  Codec Order  : (alaw:20,ilbc:30)
 +  Auto-Framing :  No 
 +  Status       : Unmonitored
 +  Useragent    : 
 +  Reg. Contact : 
 +  Qualify Freq : 60000 ms
 +  Keepalive    : 0 ms
 +  Sess-Timers  : Accept
 +  Sess-Refresh : uas
 +  Sess-Expires : 1800 secs
 +  Min-Sess     : 90 secs
 +  RTP Engine   : asterisk
 +  Parkinglot   : 
 +  Use Reason   : No
 +  Encryption   : No
 +
 +asterisk*CLI> 
 +</sxh>
 +
 +Se precisarmos obter mais informações de um determinado peer podemos fazer da seguinte forma se for IAX2
 +<sxh bash>
 +asterisk*CLI> iax2 show peer 9004
 +
 +
 +  * Name       : 9004
 +  Description 
 +  Secret       : <Set>
 +  Context      : ramais
 +  Parking lot  : 
 +  Mailbox      : 
 +  Dynamic      : Yes
 +  Callnum limit: 0
 +  Calltoken req: No
 +  Trunk        : No
 +  Encryption   : No
 +  Callerid     : "Secretary" <9004>
 +  Expire       : -1
 +  ACL          : No
 +  Addr->IP     : (Unspecified) Port 0
 +  Defaddr->IP  : 0.0.0.0 Port 4569
 +  Username     : 
 +  Codecs       : (alaw)
 +  Codec Order  : (alaw)
 +  Status       : Unmonitored
 +  Qualify      : every 60000ms when OK, every 10000ms when UNREACHABLE (sample smoothing Off)
 +
 +asterisk*CLI> 
 +</sxh>
 +
 +Agora vamos configurar o nosso plano de discagem
 +<sxh bash>
 +vim /etc/asterisk/extensions.conf
 +[general]
 +;#Para o Asterisk não terminar a ligação automáticamente
 +autofallthrough=no
 +
 +;#Contexto ramais é o que referenciamos na configuração do sip.conf e do iax.conf
 +[ramais]
 +
 +;#Ramais SIP
 +;#Aqui funciona EXTENÇÃO,PRIORIDADE,APLICAÇÃO(OPÇÕES DA APLICAÇÃO)
 +;#Aqui temos os ramais 9001 e 9001 com prioridade 1, utilizando a aplicação DIAL: Conecta dois canais de comunicação de acordo com as opções especificadas
 +;#Aqui habilitamos o 9001 e 9002 a efetuar e receber chamadas utilizando o protocolo SIP com uma espera de no máximo 30 segundos
 +exten => 9001,1,Dial(SIP/9001,30)
 +exten => 9002,1,Dial(SIP/9002,30)
 +
 +
 +;#Ramais IAX2
 +;#Aqui funciona EXTENÇÃO,PRIORIDADE,APLICAÇÃO(OPÇÕES DA APLICAÇÃO)
 +;#Aqui temos os ramais 9003 e 9004 com prioridade 1, utilizando a aplicação DIAL: Conecta dois canais de comunicação de acordo com as opções especificadas
 +;#Aqui habilitamos o 9003 e 9004 a efetuar e receber chamadas utilizando o protocolo IAX2 com uma espera de no máximo 30 segundos
 +exten => 9003,1,Dial(IAX2/9003,30)
 +exten => 9004,1,Dial(IAX2/9004,30)
 +</sxh>
 +
 +Agora vamos recarregar o nosso plano de discagem no asterisk
 +<sxh bash>
 +asterisk*CLI> dialplan reload
 +Dialplan reloaded.
 +  == Parsing '/etc/asterisk/extensions.conf': Found
 +    -- Registered extension context 'ramais'; registrar: pbx_config
 +    -- Added extension '9001' priority 1 to ramais
 +    -- Added extension '9002' priority 1 to ramais
 +    -- Added extension '9003' priority 1 to ramais
 +    -- Added extension '9004' priority 1 to ramais
 +  == Parsing '/etc/asterisk/users.conf': Found
 +    -- Registered extension context 'demo'; registrar: pbx_lua
 +    -- merging incls/swits/igpats from old(demo) to new(demo) context, registrar = pbx_config
 +    -- Including switch 'Lua/' in context 'demo'
 +    -- Added extension '1001' priority -1 to demo
 +    -- Added extension '1000' priority -1 to demo
 +    -- Registered extension context 'default'; registrar: pbx_lua
 +    -- merging incls/swits/igpats from old(default) to new(default) context, registrar = pbx_config
 +    -- Including switch 'Lua/' in context 'default'
 +    -- Added extension '1234' priority -1 to default
 +    -- Registered extension context 'parkedcalls'; registrar: features
 +    -- merging incls/swits/igpats from old(parkedcalls) to new(parkedcalls) context, registrar = pbx_config
 +    -- Added extension '700' priority 1 to parkedcalls
 +    -- Registered extension context 'ael-builtin-h-bubble'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-builtin-h-bubble) to new(ael-builtin-h-bubble) context, registrar = pbx_config
 +    -- Added extension 'h' priority 9996 to ael-builtin-h-bubble
 +    -- Added extension 'h' priority 9995 to ael-builtin-h-bubble
 +    -- Added extension 'h' priority 9994 to ael-builtin-h-bubble
 +    -- Added extension 'h' priority 9993 to ael-builtin-h-bubble
 +    -- Added extension 'h' priority 9992 to ael-builtin-h-bubble
 +    -- Added extension 'h' priority 9991 to ael-builtin-h-bubble
 +    -- Added extension 'h' priority 1 to ael-builtin-h-bubble
 +    -- Registered extension context 'ael-default'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-default) to new(ael-default) context, registrar = pbx_config
 +    -- Including context 'ael-demo' in context 'ael-default'
 +    -- Registered extension context 'ael-demo'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-demo) to new(ael-demo) context, registrar = pbx_config
 +    -- Added extension 'i' priority 1 to ael-demo
 +    -- Added extension 't' priority 1 to ael-demo
 +    -- Added extension '#' priority 2 to ael-demo
 +    -- Added extension '#' priority 1 to ael-demo
 +    -- Added extension '8500' priority 2 to ael-demo
 +    -- Added extension '8500' priority 1 to ael-demo
 +    -- Added extension '_1234' priority 1 to ael-demo
 +    -- Added extension '600' priority 4 to ael-demo
 +    -- Added extension '600' priority 3 to ael-demo
 +    -- Added extension '600' priority 2 to ael-demo
 +    -- Added extension '600' priority 1 to ael-demo
 +    -- Added extension '500' priority 4 to ael-demo
 +    -- Added extension '500' priority 3 to ael-demo
 +    -- Added extension '500' priority 2 to ael-demo
 +    -- Added extension '500' priority 1 to ael-demo
 +    -- Added extension '1000' priority 1 to ael-demo
 +    -- Added extension '3' priority 2 to ael-demo
 +    -- Added extension '3' priority 1 to ael-demo
 +    -- Added extension '2' priority 2 to ael-demo
 +    -- Added extension '2' priority 1 to ael-demo
 +    -- Added extension 's' priority 12 to ael-demo
 +    -- Added extension 's' priority 11 to ael-demo
 +    -- Added extension 's' priority 10 to ael-demo
 +    -- Added extension 's' priority 9 to ael-demo
 +    -- Added extension 's' priority 8 to ael-demo
 +    -- Added extension 's' priority 7 to ael-demo
 +    -- Added extension 's' priority 6 to ael-demo
 +    -- Added extension 's' priority 5 to ael-demo
 +    -- Added extension 's' priority 4 to ael-demo
 +    -- Added extension 's' priority 3 to ael-demo
 +    -- Added extension 's' priority 2 to ael-demo
 +    -- Added extension 's' priority 1 to ael-demo
 +    -- Registered extension context 'ael-std-exten-ael'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-std-exten-ael) to new(ael-std-exten-ael) context, registrar = pbx_config
 +    -- Including context 'ael-builtin-h-bubble' in context 'ael-std-exten-ael'
 +    -- Added extension 'sw_1_BUSY' priority 11 to ael-std-exten-ael
 +    -- Added extension 'sw_1_BUSY' priority 10 to ael-std-exten-ael
 +    -- Added extension 'sw_1_' priority 10 to ael-std-exten-ael
 +    -- Added extension '_sw_1_.' priority 11 to ael-std-exten-ael
 +    -- Added extension '_sw_1_.' priority 10 to ael-std-exten-ael
 +    -- Added extension 'a' priority 2 to ael-std-exten-ael
 +    -- Added extension 'a' priority 1 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 8 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 7 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 6 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 5 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 4 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 3 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 2 to ael-std-exten-ael
 +    -- Added extension '~~s~~' priority 1 to ael-std-exten-ael
 +    -- Registered extension context 'ael-local'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-local) to new(ael-local) context, registrar = pbx_config
 +    -- Including context 'ael-default' in context 'ael-local'
 +    -- Including context 'ael-trunklocal' in context 'ael-local'
 +    -- Including context 'ael-iaxtel700' in context 'ael-local'
 +    -- Including context 'ael-trunktollfree' in context 'ael-local'
 +    -- Including context 'ael-iaxprovider' in context 'ael-local'
 +    -- Registered extension context 'ael-longdistance'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-longdistance) to new(ael-longdistance) context, registrar = pbx_config
 +    -- Including context 'ael-local' in context 'ael-longdistance'
 +    -- Including context 'ael-trunkld' in context 'ael-longdistance'
 +    -- Registered extension context 'ael-international'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-international) to new(ael-international) context, registrar = pbx_config
 +    -- Including context 'ael-longdistance' in context 'ael-international'
 +    -- Including context 'ael-trunkint' in context 'ael-international'
 +    -- Registered extension context 'ael-trunktollfree'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-trunktollfree) to new(ael-trunktollfree) context, registrar = pbx_config
 +    -- Added extension '_91866NXXXXXX' priority 1 to ael-trunktollfree
 +    -- Added extension '_91877NXXXXXX' priority 1 to ael-trunktollfree
 +    -- Added extension '_91888NXXXXXX' priority 1 to ael-trunktollfree
 +    -- Added extension '_91800NXXXXXX' priority 1 to ael-trunktollfree
 +    -- Registered extension context 'ael-trunklocal'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-trunklocal) to new(ael-trunklocal) context, registrar = pbx_config
 +    -- Added extension '_9NXXXXXX' priority 1 to ael-trunklocal
 +    -- Registered extension context 'ael-trunkld'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-trunkld) to new(ael-trunkld) context, registrar = pbx_config
 +    -- Including context 'ael-dundi-e164-lookup' in context 'ael-trunkld'
 +    -- Added extension '_91NXXNXXXXXX' priority 2 to ael-trunkld
 +    -- Added extension '_91NXXNXXXXXX' priority 1 to ael-trunkld
 +    -- Registered extension context 'ael-trunkint'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-trunkint) to new(ael-trunkint) context, registrar = pbx_config
 +    -- Including context 'ael-dundi-e164-lookup' in context 'ael-trunkint'
 +    -- Added extension '_9011.' priority 2 to ael-trunkint
 +    -- Added extension '_9011.' priority 1 to ael-trunkint
 +    -- Registered extension context 'ael-iaxprovider'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-iaxprovider) to new(ael-iaxprovider) context, registrar = pbx_config
 +    -- Registered extension context 'ael-iaxtel700'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-iaxtel700) to new(ael-iaxtel700) context, registrar = pbx_config
 +    -- Added extension '_91700XXXXXXX' priority 1 to ael-iaxtel700
 +    -- Registered extension context 'ael-dundi-e164'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164) to new(ael-dundi-e164) context, registrar = pbx_config
 +    -- Including context 'ael-builtin-h-bubble' in context 'ael-dundi-e164'
 +    -- Added extension '~~s~~' priority 3 to ael-dundi-e164
 +    -- Added extension '~~s~~' priority 2 to ael-dundi-e164
 +    -- Added extension '~~s~~' priority 1 to ael-dundi-e164
 +    -- Registered extension context 'ael-dundi-e164-lookup'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164-lookup) to new(ael-dundi-e164-lookup) context, registrar = pbx_config
 +    -- Including context 'ael-dundi-e164-local' in context 'ael-dundi-e164-lookup'
 +    -- Including context 'ael-dundi-e164-switch' in context 'ael-dundi-e164-lookup'
 +    -- Registered extension context 'ael-dundi-e164-switch'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164-switch) to new(ael-dundi-e164-switch) context, registrar = pbx_config
 +    -- Including switch 'DUNDi/e164' in context 'ael-dundi-e164-switch'
 +    -- Registered extension context 'ael-dundi-e164-local'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164-local) to new(ael-dundi-e164-local) context, registrar = pbx_config
 +    -- Including context 'ael-dundi-e164-canonical' in context 'ael-dundi-e164-local'
 +    -- Including context 'ael-dundi-e164-customers' in context 'ael-dundi-e164-local'
 +    -- Including context 'ael-dundi-e164-via-pstn' in context 'ael-dundi-e164-local'
 +    -- Registered extension context 'ael-dundi-e164-via-pstn'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164-via-pstn) to new(ael-dundi-e164-via-pstn) context, registrar = pbx_config
 +    -- Registered extension context 'ael-dundi-e164-customers'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164-customers) to new(ael-dundi-e164-customers) context, registrar = pbx_config
 +    -- Registered extension context 'ael-dundi-e164-canonical'; registrar: pbx_ael
 +    -- merging incls/swits/igpats from old(ael-dundi-e164-canonical) to new(ael-dundi-e164-canonical) context, registrar = pbx_config
 +    -- Time to scan old dialplan and merge leftovers back into the new: 0.003173 sec
 +    -- Time to restore hints and swap in new dialplan: 0.000007 sec
 +    -- Time to delete the old dialplan: 0.000400 sec
 +    -- Total time merge_contexts_delete: 0.003580 sec
 +asterisk*CLI> 
 +</sxh>
 +
 +Agora vamos listar o que temos em nosso contexto ramais
 +<sxh bash>
 +asterisk*CLI> dialplan show ramais
 +[ Context 'ramais' created by 'pbx_config' ]
 +  '9001' =>         1. Dial(SIP/9001,30)                          [pbx_config]
 +  '9002' =>         1. Dial(SIP/9002,30)                          [pbx_config]
 +  '9003' =>         1. Dial(IAX2/9003,30)                         [pbx_config]
 +  '9004' =>         1. Dial(IAX2/9004,30)                         [pbx_config]
 +
 +-= 4 extensions (4 priorities) in 1 context. =-
 +asterisk*CLI> 
 +</sxh>
 +
 +Agora precisamos somente configurar os ATAs ou softphones para efetuarmos os testes.
 +
 +Eu vou abordar a configuração do softphone SFLphone que pode ser obtido em http://sflphone.org/
 +
 +Inicie o softphone:
 +  * Vai ser iniciado um Wizard para a configuração selecione Continue
 +  * Agora precisamos selecionar o nosso tipo de conta vamos selecionar Register an existing SIP or IAX2 account e selecione Continue
 +  * Agora vamos selecionar o tipo de protocolo vamos selecionar SIP (Session Initiation Protocol) e selecione Continue
 +  * Agora vamos preencher a nossa conta:
 +    * Em alias informe: Secretaria
 +    * Em host name informe: ip_do_voip
 +    * Em User name informe: 9001
 +    * Em Password informe: senha01
 +    * Agora selecione Continue
 +  * Agora selecione Apply
 +  * E por fim selecione Close
 +
 +No console do Asterisk vamos receber uma informação como abaixo
 +<sxh bash>
 +    -- Registered SIP '9001' at 192.168.1.2:5060
 +</sxh>
 +
 +Agora vamos listar os ramais logados
 +<sxh bash>
 +asterisk*CLI> sip show peers
 +Name/username             Host                                    Dyn Forcerport ACL Port     Status      Description                      
 +9001/9001                 192.168.1.2                              D               5060     Unmonitored                                  
 +9002                      (Unspecified)                            D                      Unmonitored                                  
 +2 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 1 offline]
 +asterisk*CLI> 
 +</sxh>
 +
 +Agora vamos obter mais informações do nosso ramal
 +<sxh bash>
 +asterisk*CLI> sip show peer 9001
 +
 +
 +  * Name       : 9001
 +  Description 
 +  Secret       : <Set>
 +  MD5Secret    : <Not set>
 +  Remote Secret: <Not set>
 +  Context      : ramais
 +  Record On feature : automon
 +  Record Off feature : automon
 +  Subscr.Cont. : <Not set>
 +  Language     : en
 +  Tonezone     : <Not set>
 +  AMA flags    : Unknown
 +  Transfer mode: open
 +  CallingPres  : Presentation Allowed, Not Screened
 +  Callgroup    : 
 +  Pickupgroup 
 +  Named Callgr : 
 +  Nam. Pickupgr: 
 +  MOH Suggest 
 +  Mailbox      : 
 +  VM Extension : asterisk
 +  LastMsgsSent : 0/0
 +  Call limit   : 0
 +  Max forwards : 0
 +  Dynamic      : Yes
 +  Callerid     : "Secretaria" <9001>
 +  MaxCallBR    : 384 kbps
 +  Expire       : 64
 +  Insecure     : no
 +  Force rport  : Auto (No)
 +  Symmetric RTP: No
 +  ACL          : No
 +  DirectMedACL : No
 +  T.38 support : No
 +  T.38 EC mode : Unknown
 +  T.38 MaxDtgrm: -1
 +  DirectMedia  : Yes
 +  PromiscRedir : No
 +  User=Phone   : No
 +  Video Support: No
 +  Text Support : No
 +  Ign SDP ver  : No
 +  Trust RPID   : No
 +  Send RPID    : No
 +  Subscriptions: Yes
 +  Overlap dial : Yes
 +  DTMFmode     : rfc2833
 +  Timer T1     : 500
 +  Timer B      : 32000
 +  ToHost       : 
 +  Addr->IP     : 192.168.1.2:5060
 +  Defaddr->IP  : (null)
 +  Prim.Transp. : UDP
 +  Allowed.Trsp : UDP
 +  Def. Username: 9001
 +  SIP Options  : (none)
 +  Codecs       : (alaw|ilbc)
 +  Codec Order  : (alaw:20,ilbc:30)
 +  Auto-Framing :  No 
 +  Status       : Unmonitored
 +  Useragent    : SFLphone
 +  Reg. Contact : sip:9001@192.168.1.2:5060
 +  Qualify Freq : 60000 ms
 +  Keepalive    : 0 ms
 +  Sess-Timers  : Accept
 +  Sess-Refresh : uas
 +  Sess-Expires : 1800 secs
 +  Min-Sess     : 90 secs
 +  RTP Engine   : asterisk
 +  Parkinglot   : 
 +  Use Reason   : No
 +  Encryption   : No
 +
 +asterisk*CLI> 
 +</sxh>
 +
 +Eu configurei outro softphone com o IAX a configuração é a mesma bastando somente selecionar o protocolo IAX
 +
 +Agora vamos listar os ramais IAX
 +<sxh bash>
 +asterisk*CLI> iax2 show peers
 +Name/Username    Host                 Mask             Port          Status      Description                     
 +9004             192.168.1.8     (D)  255.255.255.255  4569          Unmonitored                                 
 +9003             (null)          (D)  255.255.255.255  0             Unmonitored                                 
 +2 iax2 peers [0 online, 0 offline, 2 unmonitored]
 +</sxh>
 +
 +Agora vamos obter informações do nosso ramal 9004
 +<sxh bash>
 +asterisk*CLI> iax2 show peer 9004
 +
 +
 +  * Name       : 9004
 +  Description 
 +  Secret       : <Set>
 +  Context      : ramais
 +  Parking lot  : 
 +  Mailbox      : 
 +  Dynamic      : Yes
 +  Callnum limit: 0
 +  Calltoken req: No
 +  Trunk        : No
 +  Encryption   : No
 +  Callerid     : "Secretary" <9004>
 +  Expire       : -1
 +  ACL          : No
 +  Addr->IP     : (Unspecified) Port 0
 +  Defaddr->IP  : 0.0.0.0 Port 4569
 +  Username     : 
 +  Codecs       : (alaw)
 +  Codec Order  : (alaw)
 +  Status       : Unmonitored
 +  Qualify      : every 60000ms when OK, every 10000ms when UNREACHABLE (sample smoothing Off)
 +
 +asterisk*CLI
 +</sxh>
 +
 +Agora configure mais um cliente e teste a ligação entre os ramais, ligue do ramal IAX2 para o SIP
 +
 +No console do Asterisk vamos ter algo como abaixo
 +<sxh bash>
 +    -- Accepting AUTHENTICATED call from 192.168.1.8:
 +    --        > requested format = speex,
 +    --        > requested prefs = (),
 +    --        > actual format = alaw,
 +    --        > host prefs = (alaw),
 +    --        > priority = mine
 +    -- Executing [9001@ramais:1] Dial("IAX2/9004-8500", "SIP/9001,30") in new stack
 +  == Using SIP RTP CoS mark 5
 +    -- Called SIP/9001
 +    -- SIP/9001-00000001 is ringing
 +    -- SIP/9001-00000001 answered IAX2/9004-8500
 +  == Spawn extension (ramais, 9001, 1) exited non-zero on 'IAX2/9004-8500'
 +    -- Hungup 'IAX2/9004-8500'
 +</sxh>
 +
 +Agora ligue do SIP para o IAX2
 +<sxh bash>
 +  == Using SIP RTP CoS mark 5
 +    -- Executing [9004@ramais:1] Dial("SIP/9001-00000002", "IAX2/9004,30") in new stack
 +    -- Called IAX2/9004
 +    -- Call accepted by 192.168.1.8 (format alaw)
 +    -- Format for call is (alaw)
 +    -- IAX2/9004-1535 is ringing
 +    -- IAX2/9004-1535 answered SIP/9001-00000002
 +    -- Hungup 'IAX2/9004-1535'
 +  == Spawn extension (ramais, 9004, 1) exited non-zero on 'SIP/9001-00000002'
 +</sxh>
 +
 +
 +Note que o output dos duas ligações são diferentes.
 +
 +====== Configuração Básica de URA ======
 +
 +Vamos criar alguns ramais para gravarmos as mensagens da URA.
 +
 +<sxh bash>
 +vim /etc/asterisk/extensions.conf
 +[general]
 +;#Para o Asterisk não terminar a ligação automáticamente
 +autofallthrough=no
 +
 +;#Contexto ramais é o que referenciamos na configuração do sip.conf e do iax.conf
 +[ramais]
 +
 +;#Ramais SIP
 +;#Aqui funciona EXTENÇÃO,PRIORIDADE,APLICAÇÃO(OPÇÕES DA APLICAÇÃO)
 +;#Aqui temos os ramais 9001 e 9001 com prioridade 1, utilizando a aplicação DIAL: Conecta dois canais de comunicação de acordo com as opções especificadas
 +;#Aqui habilitamos o 9001 e 9002 a efetuar e receber chamadas utilizando o protocolo SIP com uma espera de no máximo 30 segundos
 +exten => 9001,1,Dial(SIP/9001,30)
 +exten => 9002,1,Dial(SIP/9002,30)
 +
 +
 +;#Ramais IAX2
 +;#Aqui funciona EXTENÇÃO,PRIORIDADE,APLICAÇÃO(OPÇÕES DA APLICAÇÃO)
 +;#Aqui temos os ramais 9003 e 9004 com prioridade 1, utilizando a aplicação DIAL: Conecta dois canais de comunicação de acordo com as opções especificadas
 +;#Aqui habilitamos o 9003 e 9004 a efetuar e receber chamadas utilizando o protocolo IAX2 com uma espera de no máximo 30 segundos
 +exten => 9003,1,Dial(IAX2/9003,30)
 +exten => 9004,1,Dial(IAX2/9004,30)
 +
 +;#RAMAIS PARA GRAVAÇÃO DE AUDIO PARA URA
 +;#Recebe a ligação
 +exten => 2001,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo boasvindas.gsm
 +same => n,Record(boasvindas.gsm)
 +;#Reproduz o audio boasvindas que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(boasvindas)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +;#Recebe a ligação
 +exten => 2002,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo saldo.ulaw
 +same => n,Record(saldo.ulaw)
 +;#Reproduz o audio saldo que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(saldo)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +;#Recebe a ligação
 +exten => 2003,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo atendimento.alaw
 +same => n,Record(atendimento.alaw)
 +;#Reproduz o audio atendimento que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(atendimento)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +;#Recebe a ligação
 +exten => 2004,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo telefonista.gsm
 +same => n,Record(telefonista.gsm)
 +;#Reproduz o audio telefonista que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(telefonista)
 +;#Finaliza a ligação
 +same => n,Hangup
 +</sxh>
 +
 +Agora vamos carregar a nossa nova configuração do Asterisk
 +<sxh bash>
 +asterisk*CLI> dialplan reload
 +Dialplan reloaded.
 +  == Parsing '/etc/asterisk/extensions.conf': Found
 +    -- Registered extension context 'ramais'; registrar: pbx_config
 +[...]
 +    -- Time to scan old dialplan and merge leftovers back into the new: 0.005485 sec
 +    -- Time to restore hints and swap in new dialplan: 0.000008 sec
 +    -- Time to delete the old dialplan: 0.000144 sec
 +    -- Total time merge_contexts_delete: 0.005637 sec
 +</sxh>
 +
 +Agora o que precisamos é ligar para os ramais e gravar os nossos audios.
 +
 +Ex:
 +  * Ligue para o ramal 2001, ao ouvir o beep, pronuncie "Bem-vindo a Minha Empresa S/A, tecle 1 para SALDO, 3 para ATENDENTES ou 11 para falar com a TELEFONISTA" e pressione # para encerrar a gravação
 +  * Liguei para o 2002 e ao ouvir o beep, pronuncie "SALDO" e pressione # para encerrar a ligação
 +  * Ligue para o 2003 e ao ouvir o beep, pronuncie "ATENDIMENTO" e pressione # para encerrar a ligação
 +  * Ligue para o 2004 e ao ouvir o beep, pronuncie "TELEFONISTA" e pressione # para encerrar a ligação.
 +
 +Agora que já temos os audios vamos ajustar a localização deles acesse
 +<sxh bash>
 +cd /var/lib/asterisk/sounds
 +</sxh>
 +
 +Agora vamos criar um diretório chamado ura
 +<sxh bash>
 +mkdir ura
 +</sxh>
 +
 +Agora vamos mover todos os audios para o nosso diretório ura
 +<sxh bash>
 +mv atendimento.alaw boasvindas.gsm saldo.ulaw telefonista.gsm ura
 +</sxh>
 +
 +Agora vamos configurar a nossa URA
 +<sxh bash>
 +vim /etc/asterisk/extensions.conf
 +[general]
 +;#Para o Asterisk não terminar a ligação automáticamente
 +autofallthrough=no
 +
 +;#Contexto ramais é o que referenciamos na configuração do sip.conf e do iax.conf
 +[ramais]
 +
 +;#Ramais SIP
 +;#Aqui funciona EXTENÇÃO,PRIORIDADE,APLICAÇÃO(OPÇÕES DA APLICAÇÃO)
 +;#Aqui temos os ramais 9001 e 9001 com prioridade 1, utilizando a aplicação DIAL: Conecta dois canais de comunicação de acordo com as opções especificadas
 +;#Aqui habilitamos o 9001 e 9002 a efetuar e receber chamadas utilizando o protocolo SIP com uma espera de no máximo 30 segundos
 +exten => 9001,1,Dial(SIP/9001,30)
 +exten => 9002,1,Dial(SIP/9002,30)
 +
 +
 +;Ramais IAX2
 +;#Aqui funciona EXTENÇÃO,PRIORIDADE,APLICAÇÃO(OPÇÕES DA APLICAÇÃO)
 +;#Aqui temos os ramais 9003 e 9004 com prioridade 1, utilizando a aplicação DIAL: Conecta dois canais de comunicação de acordo com as opções especificadas
 +;#Aqui habilitamos o 9003 e 9004 a efetuar e receber chamadas utilizando o protocolo IAX2 com uma espera de no máximo 30 segundos
 +exten => 9003,1,Dial(IAX2/9003,30)
 +exten => 9004,1,Dial(IAX2/9004,30)
 +
 +
 +;#RAMAIS PARA GRAVAÇÃO DE AUDIO PARA URA
 +;#Recebe a ligação
 +exten => 2001,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo boasvindas.gsm
 +same => n,Record(boasvindas.gsm)
 +;#Reproduz o audio boasvindas que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(boasvindas)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +;#Recebe a ligação
 +exten => 2002,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo saldo.ulaw
 +same => n,Record(saldo.ulaw)
 +;#Reproduz o audio saldo que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(saldo)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +;#Recebe a ligação
 +exten => 2003,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo atendimento.alaw
 +same => n,Record(atendimento.alaw)
 +;#Reproduz o audio atendimento que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(atendimento)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +
 +;#Recebe a ligação
 +exten => 2004,1,Answer
 +;#Inicia a gravação da mensagem e armazena no arquivo telefonista.gsm
 +same => n,Record(telefonista.gsm)
 +;#Reproduz o audio telefonista que gravamos acima não precisamos passar a extesão caso tenhamos somente um com este nome
 +same => n,Playback(telefonista)
 +;#Finaliza a ligação
 +same => n,Hangup
 +
 +
 +;#Configuracao da URA
 +exten => 9000,1,Goto(uraprincipal,s,1)
 +
 +;# Contexto para o processamento da URA
 +[uraprincipal]
 +
 +;#Recebe a nossa ligação
 +exten => s,1,Answer
 +;#Vamos definir um contador para a execução da ura, vamos definir um timeout para ela tambem e a mensagem de boasvindas
 +same => n,Set(CONTA=1)
 +same => n,Set(TIMEOUT(digit)=1)
 +same => n,Set(TIMEOUT(response)=4)
 +same => n(inicioura),BackGround(ura/boasvindas)
 +
 +;# Usuario digitou 1
 +;# - Reproduz o conteudo do arquivo de som saldo
 +;# e pronuncia a data e hora correntes
 +exten => 1,1,PlayBack(ura/saldo)
 +same => n,DateTime()
 +same => n,HangUp
 +
 +;# Usuario digitou 3
 +;# - Reproduz o conteudo do arquivo de som atendimento
 +;# e encaminha a chamada para o cliente IAX2/9003
 +exten => 3,1,PlayBack(ura/atendimento)
 +same => n,Dial(IAX2/9003)
 +same => n,HangUp
 +
 +;# Usuario digitou 11
 +;# Reproduz o conteudo do arquivo de som telefonista
 +;# e encaminha a chamada para o cliente SIP/9002
 +exten => 11,1,PlayBack(ura/telefonista)
 +same => n,Dial(SIP/9001)
 +same => n,HangUp
 +
 +;#Entrada Invalida
 +exten => i,1,PlayBack(invalid)
 +same => n,Goto(contador,1)
 +
 +;#Fim do tempo para a digitacao
 +exten => t,1,PlayBack(tt-allbusy)
 +same => n,Goto(contador,1)
 +
 +;#Extensao que verifica se o limite de tentativas da URA foi atingido
 +exten => contador,1,Set(CONTA=$[${CONTA} + 1])
 +same => n,GotoIf($[${CONTA} < 3]?s,inicioura)
 +same => n,HangUp
 +</sxh>
 +
 +Agora vamos recarregar a nossa configuração
 +<sxh bash>
 +asterisk*CLI> dialplan reload
 +Dialplan reloaded.
 +[...]
 +</sxh>
 +
 +Agora podemos ligar para o ramal 9000 e testar a nossa ura, não esqueça de configurar os ramais 9001 e 9003 que vai ser utilizado na URA.
 +
 +
 +====== Referências ======
 +  - https://wiki.asterisk.org/wiki/display/AST/Installing+Asterisk+From+Source
 +  - https://wiki.asterisk.org/wiki/display/AST/Configuration+and+Operation
 +  - https://wiki.asterisk.org/wiki/display/AST/Asterisk+GUI