hujiao-gui/database/seeds/DialplanTableSeeder.php

411 lines
19 KiB
PHP

<?php
use Illuminate\Database\Seeder;
class DialplanTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//清空表
\Illuminate\Support\Facades\DB::statement('SET FOREIGN_KEY_CHECKS=0;');
\App\Models\Action::truncate();
\App\Models\Condition::truncate();
\App\Models\Extension::truncate();
\Illuminate\Support\Facades\DB::statement('SET FOREIGN_KEY_CHECKS=1;');
//拨号计划
$data = [
[
'display_name' => '挂断',
'name' => 'hangup',
'context' => 'default',
'sort' => 0,
'conditions' => [
[
'display_name' => '规则一',
'field' => 'destination_number',
'expression' => '^hangup$',
'break' => 'on-false',
'sort' => 0,
'actions' => [
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 0,
],
[
'display_name' => '挂断',
'application' => 'hangup',
'data' => '',
'sort' => 1,
],
]
],
],
],
[
'display_name' => '本地分机互拨',
'name' => 'Local_Extension',
'context' => 'default',
'sort' => 0,
'conditions' => [
[
'display_name' => '规则一',
'field' => 'destination_number',
'expression' => '^(\d{4,5})_([a-z0-9]{16,32})$',
'break' => 'on-false',
'sort' => 0,
'actions' => [
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 0,
],
[
'display_name' => '媒体绕过',
'application' => 'set',
'data' => 'bypass_media=false',
'sort' => 1,
],
[
'display_name' => '被叫挂断后主叫也挂断',
'application' => 'set',
'data' => 'hangup_after_bridge=true',
'sort' => 2,
],
[
'display_name' => '设置uuid到bleg',
'application' => 'export',
'data' => 'nolocal:origination_uuid=$2',
'sort' => 3,
],
[
'display_name' => '呼叫',
'application' => 'bridge',
'data' => 'user/$1',
'sort' => 4,
],
]
],
],
],
[
'display_name' => '内线拨打外线电话',
'name' => 'dial_from_gateway_to_phone',
'context' => 'default',
'sort' => 1,
'conditions' => [
[
'display_name' => '规则一',
'field' => 'destination_number',
'expression' => '^(gw\d+)_(\d{11,20})_([a-z0-9]{16,32})$',
'break' => 'on-false',
'sort' => 0,
'actions' => [
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 0,
],
[
'display_name' => '设置网关',
'application' => 'set',
'data' => 'gw=$1',
'sort' => 1,
],
[
'display_name' => '设置被叫号码',
'application' => 'set',
'data' => 'dialed_extension=$2',
'sort' => 2,
],
[
'display_name' => '设置uuid到bleg',
'application' => 'export',
'data' => 'nolocal:origination_uuid=$3',
'sort' => 3,
],
[
'display_name' => '主叫随被叫一起挂断',
'application' => 'set',
'data' => 'hangup_after_bridge=true',
'sort' => 5,
],
[
'display_name' => '呼叫失败时继续来播放提示音',
'application' => 'set',
'data' => 'continue_on_fail=true',
'sort' => 6,
],
[
'display_name' => '呼叫',
'application' => 'bridge',
'data' => 'sofia/gateway/${gw}/${dialed_extension}',
'sort' => 11,
],
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 12,
],
[
'display_name' => '等待1秒',
'application' => 'sleep',
'data' => '1000',
'sort' => 13,
],
[
'display_name' => '播放提示',
'application' => 'playback',
'data' => '/usr/local/freeswitch/sounds/${originate_disposition}.wav',
'sort' => 14,
],
[
'display_name' => '挂机',
'application' => 'hangup',
'data' => null,
'sort' => 15,
],
],
],
],
],
[
'display_name' => '客户端直接拨号',
'name' => 'client_to_phone',
'context' => 'default',
'sort' => 1,
'conditions' => [
[
'display_name' => '规则一',
'field' => 'destination_number',
'expression' => '^(\d{6,11})$',
'break' => 'on-false',
'sort' => 0,
'actions' => [
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 0,
],
[
'display_name' => '主叫随被叫一起挂断',
'application' => 'set',
'data' => 'hangup_after_bridge=true',
'sort' => 1,
],
[
'display_name' => '等待1秒',
'application' => 'sleep',
'data' => '1000',
'sort' => 2,
],
[
'display_name' => '播放提示',
'application' => 'playback',
'data' => '/usr/local/freeswitch/sounds/client_to_phone.wav',
'sort' => 3,
],
[
'display_name' => '挂断',
'application' => 'hangup',
'data' => null,
'sort' => 4,
],
],
],
[
'display_name' => '通过网关呼出',
'field' => 'caller_id_number',
'expression' => '^1[0-9][0-9][0-9]$',
'break' => 'on-false',
'sort' => 1,
'actions' => [
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 0,
],
[
'display_name' => '主叫随被叫一起挂断',
'application' => 'set',
'data' => 'hangup_after_bridge=true',
'sort' => 1,
],
[
'display_name' => '等待1秒',
'application' => 'sleep',
'data' => '1000',
'sort' => 2,
],
[
'display_name' => '呼叫失败时继续来播放提示音',
'application' => 'set',
'data' => 'continue_on_fail=true',
'sort' => 3,
],
[
'display_name' => '设置网关',
'application' => 'set',
'data' => 'gw=gw1',
'sort' => 4,
],
[
'display_name' => '设置网关前缀',
'application' => 'set',
'data' => 'dialed_prefix=',
'sort' => 5,
],
[
'display_name' => '设置网关出局名称',
'application' => 'set',
'data' => 'effective_caller_id_name=',
'sort' => 6,
],
[
'display_name' => '设置网关出局号码',
'application' => 'set',
'data' => 'effective_caller_id_number=',
'sort' => 6,
],
[
'display_name' => '呼叫',
'application' => 'bridge',
'data' => 'sofia/gateway/${gw}/${dialed_prefix}${destination_number}',
'sort' => 7,
],
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 8,
],
[
'display_name' => '等待1秒',
'application' => 'sleep',
'data' => '1000',
'sort' => 9,
],
[
'display_name' => '播放提示',
'application' => 'playback',
'data' => '/usr/local/freeswitch/sounds/${originate_disposition}.wav',
'sort' => 10,
],
[
'display_name' => '挂机',
'application' => 'hangup',
'data' => null,
'sort' => 11,
],
],
],
],
],
//呼入
[
'display_name' => '952273呼入',
'name' => 'call_in_952273',
'context' => 'public',
'sort' => 0,
'conditions' => [
[
'display_name' => '规则一',
'field' => 'destination_number',
'expression' => '^(02863803994|952273|63803994)$',
'break' => 'on-false',
'sort' => 0,
'actions' => [
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 0,
],
[
'display_name' => '等待1秒',
'application' => 'sleep',
'data' => '1000',
'sort' => 1,
],
[
'display_name' => '呼叫失败时继续来播放提示音',
'application' => 'set',
'data' => 'continue_on_fail=true',
'sort' => 2,
],
[
'display_name' => '转到分机',
'application' => 'bridge',
'data' => 'user/8971|user/8972|user/8973',
'sort' => 3,
],
[
'display_name' => '系统应答',
'application' => 'answer',
'data' => null,
'sort' => 4,
],
[
'display_name' => '播放提示',
'application' => 'playback',
'data' => '/usr/local/freeswitch/sounds/kefu_is_busy.wav',
'sort' => 6,
],
[
'display_name' => '挂机',
'application' => 'hangup',
'data' => null,
'sort' => 7,
],
]
],
],
],
];
foreach ($data as $d1){
$extension = \App\Models\Extension::create([
'display_name' => $d1['display_name'],
'name' => $d1['name'],
'context' => $d1['context'],
'sort' => $d1['sort'],
]);
if (isset($d1['conditions'])&&!empty($d1['conditions'])){
foreach ($d1['conditions'] as $d2){
$condition = \App\Models\Condition::create([
'display_name' => $d2['display_name'],
'field' => $d2['field'],
'expression' => $d2['expression'],
'break' => $d2['break'],
'sort' => $d2['sort'],
'extension_id' => $extension->id,
]);
if (isset($d2['actions'])&&!empty($d2['actions'])){
foreach ($d2['actions'] as $d3){
\App\Models\Action::create([
'display_name' => $d3['display_name'],
'application' => $d3['application'],
'data' => $d3['data'],
'sort' => $d3['sort'],
'condition_id' => $condition->id,
]);
}
}
}
}
}
}
}