5.05.2021

freepbx 15 automatic sync for high availability. part 1.

Part 1
main aim is using internal features of freepbx to make sync between two PBXs. Automatic sync will be made by back&restore feature in FREEPBX.

STEP: 1. add asterisk public key from master FREEPBX to backup server. master public key for asterisk user you can find in menu “Backup&Restore -> Global Setting”

Master asterisk public key

Copy this key to /home/asterisk/.ssh/authorized_keys at Backup machine.

STEP: 2. Add new filestore with SSH connect to backup server

Create filestore with ssh access to backup server

STEP: 3. example of ssh parameters for ssh connect

STEP 4: create new backup in menu “Backup&Restore”. use any modules you need and set crontime you wish. for example i will be use one time per day. Better you set “Delete After Runs” 1 so only 1 file will be in backup server.

Now run it and check if new file with backup created in /home/asterisk dir at backup server.

STEP5: add cronjob at backup: something like that: crontab -u asterisk -e
0 1 * * * fwconsole backup –restore /home/asterisk/*.tar.gz

15.12.2019

FreePBX AMI Events duplicate. queue. agents.

По умолчанию, freepbx создают агентов в очереди в качестве локальных каналов local/1000-ext/n , где /n означает отключение автоматизации внутренних каналов, по этому создается по два канала в каждой очереди и видимо с обоих приходит уведомление. В общем если заполнять агентов с префиксом S например S1001,0, уведомления приходят ровно по одному на очередь как и должно быть. Всем спасибо. Я кстати не могу зарегаться на основном сайте, не показывает капчу… Тематика Астериска последнее время близка. кто знает может чем смогу помочь.

12.12.2019

callback+freepbx+AMD

Схема работы такая:

Любой разрешенный ip звонит на DID номер pbx, станция перезванивает с DID номера и соединяет с внутренним абонентом) показывая в качестве callerid номер на который осуществляется дозвон.

Особенности: минимум вмешательства в код freepbx чтобы можно было использовать весь функционал станции.

У вас уже установлена: Freepbx, callback модуль, правильно настроены callback и trunk в интерфейсе freepbx

Всё что нам нужно это добавить передачу переменной в callback модуль:

//define the args for Originate
$channel = "Local/".$callback_number."@from-internal";
$exten = $callback_exten;
$context = $callback_context;
$priority = $callback_priority;
$timeout = $callback_timeout;
$callerid = $callback_callerid;
$variable = "__MYVAR4=$callback_number";
$account = "";
$application = "";
$data = "";

затем поймать её в extension_custom.conf

[macro-dialout-one-predial-hook]
exten => s,1,set(CALLERID(all)=${MYVAR4})

[macro-AMD1]
exten => s,1,noop("Check of answering machine")
exten => s,n,background(silence/1)
exten => s,n,AMD()
exten => s,n,NoOp("AMD STATUS IS :"${AMDSTATUS}"…CAUSE:"${AMDCAUSE})
exten => s,n,Set(CDR(userfield)=${AMDSTATUS}|${AMDCAUSE})
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?human:mach)
exten => s,n(mach),Hangup()
exten => s,n(human),noop(This is Human continue)

How to use callback calls at freepbx

  1. Create callback application in menu. It will make you possible to send calls from callback to any registered extension \ Ring groups \ Queues \ IVR or something else.  In CallerID field you should set “${FROM_DID}” to send calls from your DID number. 
  1. Create Trunk for making outbound calls with AMD it may be any trunk but you should add “TM(AMD1)” in Dial options.
  2. Create inbound route for receive call from any IP and to specific DID number: you have example here in interface with number 55555. Choose destination as callback application created at step 1. 
  3. Create outbound route for route calls making by your freepbx (not only from callback app). You should set Dial Patterns to avoid making call to destinations that you don’t want to call. 
  4. Apply changes. That is all you need in web interface. 

21.11.2019

Freepbx using any CAllerID display name as callerID(num) when making external calls

В рамках freepbx вы не можете установить callerid name (display) как вы хотите, вы всегда будете видеть тот display name который установили при создании Extension.

Чтобы исправить эту несправедливость, добавляем в extension_custom.conf

[macro-dialout-trunk-predial-hook]
exten => s,1,Noop(Number translation)
exten => s,n,Set(MYFROM=${PJSIP_HEADER(read,From)})
exten => s,n,set(MYFROM=${CUT(MYFROM, ,1)})
exten => s,n,set(MYFROM=${REPLACE(MYFROM,\")})
exten => s,n,Noop(HEADER - ${MYFROM})
exten => s,n,Set(CALLERID(number)=${MYFROM})

после этого при исходящих звонках через транки, вы будете видеть тот АОН который вы выставить в CAller ID name в своем софтфоне.

11.11.2019

Add simple Ring group (freepbx)

After that go to “inbound route” and change\add destination to created group

11.11.2019

Add queue for few Extensions to make ring them all (freepbx)

then go to “inbound routes”

Choose destination Queue created before

11.11.2019

Add carrier trunk for recieve DID number (Freepbx)

  1. Adding inbound trunk: There are many ways to add carrier , carriers may use IP-IP direct link or carrier may ask you to register on registrar server.

Adding IP-IP trunk:

Adding route to deliver call from DID to Extension:

That’s all for receiving call on stand alone extension

11.11.2019

Freepbx add simple extension