Берем за пример статью Пересылка СМС с OpenVox в Telegram, здесь мы получаем сообщения с Opnevox, отсекаем только те сообщения, которые приходят на определённый порт, и отправляем сообщение в Telegram.
В этой статье опишу как «умно» сортировать входящие СМС сообщения, и направлять их на определённые сервисы (в моем примере ниже — на разные почтовые ящики).
Openvox при входящем СМС сообщении, может отправить запрос с параметрами $phonenumber, $port, $message, $time. Соответственно с этими параметрами мы можем гибко настроить пересылку СМС сообщений, также с этой возможностью можно реализовать ответ с номера телефона на который было принято СМС.

Настраиваем Openvox следующим образом:

Переходим на СМС → Настройки СМС → SMS TO HTTP, задаем нужные нам параметры:

После этого, создаем PHP скрипт, для анализа сообщений:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
header('Content-Type: text/html; charset=Windows-1251');
$openvox='';
$token = "00000000:AAAAAAAAAAAAAAAAAAAAAAAAAA";
$chatid = "000000000";
$mailserver='smtp.gmail.com';
$mailserverPort='587';
$mailSend='account@gmail.com';
$mailSendPass='Password';
$mailTo='openvox@gmail.com';
if (((!empty($_GET['phonenumber'])&&!empty($_GET['port']))&&(!empty($_GET['message'])&&!empty($_GET['time'])))&&!empty($_GET['openvox'])){
    $openvox=$_GET['openvox'];
    if($openvox=='192.168.0.11')
        $tel=array(
            'gsm-1.1' => '38067XXXXXXX_nazvanie_1',
            'gsm-1.2' => '38067XXXXXXX_nazvanie_2',
            'gsm-1.3' => '38067XXXXXXX_nazvanie_3',
            'gsm-1.4' => '38050XXXXXXX_nazvanie_4', 
            'gsm-2.1' => '38050XXXXXXX_nazvanie_5',
            'gsm-2.2' => '38050XXXXXXX_nazvanie_6',
            'gsm-2.3' => '38050XXXXXXX_nazvanie_7',
            'gsm-2.4' => '38050XXXXXXX_nazvanie_8', 
            'gsm-3.1' => '38050XXXXXXX_nazvanie_9',
            'gsm-3.2' => '38066XXXXXXX_nazvanie_10',
            'gsm-3.3' => '38067XXXXXXX_nazvanie_11',
            'gsm-3.4' => '38050XXXXXXX_nazvanie_12', 
            'gsm-4.1' => '38050XXXXXXX_nazvanie_13',
            'gsm-4.2' => '38066XXXXXXX_nazvanie_14',
            'gsm-4.3' => '38050XXXXXXX_nazvanie_15',
            'gsm-4.4' => '38067XXXXXXX_nazvanie_16', 
            'gsm-5.1' => '38050XXXXXXX_nazvanie_17',
            'gsm-5.2' => '38050XXXXXXX_nazvanie_18',
            'gsm-5.3' => '38095XXXXXXX_nazvanie_19',
            'gsm-5.4' => '38067XXXXXXX_nazvanie_20'
        );
    else if ($openvox=='192.168.0.12')
        $tel=array(
            'gsm-1.1' => '+38050XXXXXXX_nazvanie_1',
            'gsm-1.2' => '+38099XXXXXXX_nazvanie_2',
            'gsm-1.3' => '+38099XXXXXXX_nazvanie_3',
            'gsm-1.4' => '+38073XXXXXXX_nazvanie_4',
            'gsm-2.1' => '+38067XXXXXXX_nazvanie_5',
            'gsm-2.2' => '+38067XXXXXXX_nazvanie_6',
            'gsm-2.3' => '+38067XXXXXXX_nazvanie_7',
            'gsm-2.4' => '+38063XXXXXXX_nazvanie_8'
        );
    $phonenumber=$_GET['phonenumber'];
    $port=$_GET['port'];
 
    $Subject=$phonenumber.' прислал SMS сообщение на '.$tel[$port];
    $Body=$phonenumber.' прислал сообщение на '.$tel[$port].'. Время получения: '.$_GET['time'].'. Текст сообщения: ';
    $Body=$Body.substr(mb_convert_encoding($_GET['message'], "windows-1251", "auto"), 1);
//Ниже - отправка всех СМС сообщений на openvox@gmail.com ящик:
    exec('"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\email.exe" '.$mailserver.' '.$mailserverPort.' '.$mailSend.' '.$mailSendPass.' '.$mailTo.' '.$Subject.' ::S '.$Body);
 
//Ниже - отправка сообщений на ящик sms.zakupki@gmail.com только с определенных портов: 
    if((($port=='gsm-1.1')&&($openvox=='192.168.0.11'))||(($port=='gsm-1.2')&&($openvox=='192.168.0.11'))||(($port=='gsm-1.4')&&($openvox=='192.168.0.11'))||(($port=='gsm-2.1')&&($openvox=='192.168.0.11'))||(($port=='gsm-2.2')&&($openvox=='192.168.0.11'))||(($port=='gsm-3.2')&&($openvox=='192.168.0.11'))) exec('"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\email.exe" '.$mailserver.' '.$mailserverPort.' '.$mailSend.' '.$mailSendPass.' sms.zakupki@gmail.com '.$Subject.' ::S '.$Body);
 
//Ниже - отправка сообщений в Telegram с определённого номера (функционал описан в статье https://adminblog.net.ua/linux/peresylka-sms-s-openvox-v-telegram.html):
    if (($port=='gsm-2.1')&&($openvox=='192.168.0.11')) {
    $pattern = "/^\+380\d{3}\d{2}\d{2}\d{2}$/";
    if(preg_match($pattern, $phonenumber)){
        $message=mb_convert_encoding($_GET['message'], "windows-1251", "auto");
        preg_match('(\b\d{3}\b)', $message, $str);
        $time=$_GET['time'];
        if(!empty($str)){
            $text = 'Сообщение от: '.$phonenumber.' - *'.$str[0].'* '.$time;
            echo $text;
            exec('"C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\telegram.exe" '.$token.' '.$chatid.' Markdown '.$text);
        }
    }
}
}
?>

Допустим у нас есть два OpenVox шлюза (№1 192.168.0.11, №2 192.168.0.12), с которых нужно пересылать сообщения. Во время настроек на самых шлюзах, определим собственный параметр, при помощи которого мы будем определять с какого шлюза пришло сообщения: openvox=192.168.0.11. Когда запускается скрипт, он получает параметры и обрабатывает их. Пример код: 'gsm-1.1' => '38067XXXXXXX_nazvanie_1' — здесь мы задаем массив с понятным описанием порта, на который пришло сообщение.

Приложение C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\email.exe, описывал в Отправка сообщений на e-mail через cmd

Приложение C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin\telegram.exe, описывал в Отправка сообщений в Telegram.

Таким образом получилось «умное» распределение входящих СМС сообщений.