
Yuriy
25.09.2018
09:02:34
"и чё?" (с)
Ну наверное тут я вас отправлю учить матчасть

Sergey
25.09.2018
09:04:24
Мы вариант с проверкой номера звонящего делали, то ли через HTTP обращение (к внешней системе), или через обращение в локальной БД MySQL)

Yuriy
25.09.2018
09:06:26
Засчитывается как "нет внятного ответа"
Да пофиг. Если вы не в курсе как работает постоянное доергание shell из астериска и почему открывать и закрывать файл на каждый звонок -плохая идея и не можете погуглить об этом ничего 0 то это ваша проблема а не моя

Google

Yuriy
25.09.2018
09:06:42
Я гуглить за вас и кидать в вас цитатами не буду. Мне лень

Sergey
25.09.2018
09:07:18
Что произойдет с файловой системой при нагрузке в 100 звонков в день?

Sailor
25.09.2018
09:11:56
Подскажите может есть уже готовое решение.
Набирать один и тот же номер, если взяли трубку - переводить звонок на екстеншен.

Gaisin
25.09.2018
09:13:43
100 звонков в день, если растянуто то ни чего

Sergey
25.09.2018
09:13:43

Sailor
25.09.2018
09:13:52

Sergey
25.09.2018
09:14:05
да
А письменное согласие абонента имеется? )))

Gaisin
25.09.2018
09:16:38
Вам нагрузку в чем озвучить?
И что делается в 1 вызове, запросы к бд или чтение чего то

Sergey
25.09.2018
09:18:07
Вам нагрузку в чем озвучить?
В количестве вызовов в день, плюс было бы неплохо узнать пиковую нагрузку, плюс с какой разницей во времени поступают вызовы (минимальный интервал)

Gaisin
25.09.2018
09:21:48
Ну если система высоконагруженная, то лучше измерять в cps

Google

Gaisin
25.09.2018
09:22:21
А там исходим от операций которые выполняются в диалплане

Sergey
25.09.2018
09:23:29

Gaisin
25.09.2018
09:23:44
Ну хз)

Роман
25.09.2018
09:25:36

Gaisin
25.09.2018
09:25:42
Тут важно не количество вызовов, а частота

Sergey
25.09.2018
09:28:34


Yuriy
25.09.2018
09:29:25
В количестве вызовов в день, плюс было бы неплохо узнать пиковую нагрузку, плюс с какой разницей во времени поступают вызовы (минимальный интервал)
Чтобы открыть файл - файловой системе необходимо найти до него путь.
Затем создать дескриптор файла.
Затем зайти в файл и распарсить текст
Затем закрыть файли и удалить дескриптор файла
При частых обращениях к файлу операция открытия и закрытия дескриптора дает оверхед
Создание дескриптора тоже ищет память вкуче, резирвируя ее - что тоже дает оверхэд
Астеирск не умеет шарить десткриптор файла через диалплан
соотвесвенно данная операция поторяется на каждый вызов
Касаемо вывзова shell
вызов shell Из конфига так же дает большую нагрузку на систему ибо либа которая используется для этого - сильно грузит систему
Все это в купе дает сильные нагрузки на систему пи ее активном использовании и гораздо целесообразнее использовать cache
Ну и - жаль что вас этому не учили в университете или в поисковике гугл


Gaisin
25.09.2018
09:32:13

Sergey
25.09.2018
09:32:27

Gaisin
25.09.2018
09:32:43
Ну тем более

Sergey
25.09.2018
09:33:14

Gaisin
25.09.2018
09:33:53
А понял
Я бы посоветовал, asterisk + lua + tarantool или redis)

Sergey
25.09.2018
09:34:45
Если у него астериск без MySQL (и человек задает такие вопросы) - то вряд ли там будет 1000 cps

Kirill
25.09.2018
09:36:57
Спасибо всем) да, у меня не 1000 cps, поэтому и думал сделать простой способ через файл. Но судя по всему проще через asterdb реализовать

Sergey
25.09.2018
09:37:26

Kirill
25.09.2018
09:37:34
И это все нужно всего на одну неделю, после это все выкинут

Sergey
25.09.2018
09:37:42
Даже если не осилишь - тоже отпишись, что не осилил

Google

Sergey
25.09.2018
09:40:27

Sailor
25.09.2018
09:41:08
Так все же, кто может подскажет
может есть уже готовое решение.
Набирать один и тот же номер, если взяли трубку - переводить звонок на екстеншен.

Sergey
25.09.2018
09:41:55
владеешь башем - почему бы и нет (для временного решения)
знаешь как написать свою функцию в астериске для обращения к MySQL - почему бы и нет
знаешь redis - круть

Ruslan
25.09.2018
09:42:27

Kirill
25.09.2018
09:43:21

Sergey
25.09.2018
09:44:08

Sailor
25.09.2018
09:44:40
Через кол-файлы?
Можно и так. Можешь подсказать по фрипбкс.
Channel: ( В каком формате тут указать я не могу понять, у меня сип транки)
Callerid: 100
MaxRetries: 5
RetryTime: 300
WaitTime: 45
Context: from-internal ( как узнать имя контекта)
Extension: 107
Priority: 1

Kirill
25.09.2018
09:45:26

Sergey
25.09.2018
09:46:32
Ну каждый работает как может )))))
С таким подходом не каждый будет работать (в смысле будет не нужен на работе, т.к. ничего не сделает за отведенное время)
На баше написал, реализовал за час-два, а оставшееся время сидишь и изучаешь MySQL/redis/etc )))

Ruslan
25.09.2018
09:48:51

Sailor
25.09.2018
09:49:31
Кто то может с простой фигней в виде колл файла?
Не могу понять как заполнить 3 строки
Channel: ( В каком формате тут указать я не могу понять, у меня сип транки)
Callerid: 100
MaxRetries: 5
RetryTime: 300
WaitTime: 45
Context: from-internal ( как узнать имя контекта)
Extension: 107
Priority: 1

Ruslan
25.09.2018
09:50:10

Sailor
25.09.2018
09:50:40

Sergey
25.09.2018
09:51:48

Sailor
25.09.2018
09:52:40
Channel: SIP/GB_TEST/89261112233

Google

Sailor
25.09.2018
09:52:56

Ruslan
25.09.2018
09:53:24
то понятно, я сам колл файл не знаю как правильно заполнить, а именно указать Channel, context
вот тебе пример рабочий, тока комментарии удали //
<?php
$outgoing =
"Channel: SIP/mtt/8900960XXXX\r\n". // кому звоним
"Callerid: 100\r\n". // опционально
"MaxRetries: 5\r\n".
"RetryTime: 300\r\n".
"WaitTime: 45\r\n".
"Context: outgoing_context\r\n". // контекст внутреннего номера
"Extension: 777\r\n". // внутренний на астере
"Priority: 1\r\n"
;
$file = fopen('/var/spool/asterisk/outgoing/'.md5(time().rand(0,10000)),"w");
fwrite($file, $outgoing);
fclose($file);
?>

Sergey
25.09.2018
09:53:30

Dmitriy
25.09.2018
10:16:53
на всех нормальных заборах пишут что создание call-файла сразу в /outgoing/ чревато глюками и поясняют почему. ищите

Ruslan
25.09.2018
10:18:28

Sailor
25.09.2018
10:25:46
Так работает
но, не переводит звонок на внутреннего
может быть изза того что ринггруппа?

Admin
ERROR: S client not available

Ruslan
25.09.2018
10:27:22

Sailor
25.09.2018
10:27:50
там с ринг все ок, она рабочая

Ruslan
25.09.2018
10:28:40

Sailor
25.09.2018
10:29:08
не в этом суть, решил проверить звонком не с астера в астер, а на мобильный свой, снимаю трубку - 3 секунды и завершается звонок

Ruslan
25.09.2018
10:29:47

Yuriy
25.09.2018
10:39:26


Sailor
25.09.2018
10:43:20
-
-- SIP/13023199448-00022a88 answered Local/02380936904549@from-internal-00000668;2
-- Executing [177@from-trunk-sip-18172600613:1] Set("Local/02380936904549@from-internal-00000668;1", "GROUP()=OUT_6") in new stack
-- Executing [177@from-trunk-sip-18172600613:2] Goto("Local/02380936904549@from-internal-00000668;1", "from-trunk,177,1") in new stack
-- Goto (from-trunk,177,1)
-- Executing [177@from-trunk:1] Set("Local/02380936904549@from-internal-00000668;1", "DB(API/HOST)=52.41.36.160") in new stack
-- Executing [177@from-trunk:2] Set("Local/02380936904549@from-internal-00000668;1", "DB(API/KEY)=pgHcYuME4sUHrLKhcjcR") in new stack
-- Executing [177@from-trunk:3] Set("Local/02380936904549@from-internal-00000668;1", "CURLOPT(httptimeout)=7") in new stack
-- Executing [h@macro-dialout-trunk:1] Macro("Local/02380936904549@from-internal-00000668;2", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("Local/02380936904549@from-internal-00000668;2", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] ExecIf("Local/02380936904549@from-internal-00000668;2", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s@macro-hangupcall:4] NoOp("Local/02380936904549@from-internal-00000668;2", "{
-- "status": 200,
-- "data": {
-- "message": "Success",
-- "a": "hangup",
-- "hash": "a13e51d1405d469704b8357c10fec61a"
-- }
-- }") in new stack
-- Executing [s@macro-hangupcall:5] Hangup("Local/02380936904549@from-internal-00000668;2", "") in new stack
== Spawn extension (macro-hangupcall, s, 5) exited non-zero on 'Local/02380936904549@from-internal-00000668;2' in macro 'hangupcall'
== Spawn extension (macro-dialout-trunk, h, 1) exited non-zero on 'Local/02380936904549@from-internal-00000668;2'
== Spawn extension (macro-dialout-trunk, s, 22) exited non-zero on 'Local/02380936904549@from-internal-00000668;2' in macro 'dialout-trunk'
== Spawn extension (from-internal, 02380936904549, 6) exited non-zero on 'Local/02380936904549@from-internal-00000668;2'
-- Executing [177@from-trunk:4] Set("SIP/13023199448-00022a88", "CURL_RESULT={
-- "status": 200,
-- "data": {
-- "name": "",
-- "cid": "777",
-- "hash": "a63e26ac2487ac3db2c0db2776314ab7",
-- "a": "client-start"
-- }
-- }") in new stack
-- Executing [177@from-trunk:5] Set("SIP/13023199448-00022a88", "CALLERID(name)=") in new stack
-- Executing [177@from-trunk:6] Set("SIP/13023199448-00022a88", "GLOBAL(API_HASH)="a63e26ac2487ac3db2c0db2776314ab7"") in new stack
== Setting global variable 'API_HASH' to '"a63e26ac2487ac3db2c0db2776314ab7"'
-- Executing [177@from-trunk:7] NoOp("SIP/13023199448-00022a88", ""a63e26ac2487ac3db2c0db2776314ab7"") in new stack
-- Auto fallthrough, channel 'SIP/13023199448-00022a88' status is 'UNKNOWN'
-- Executing [h@from-trunk:1] Macro("SIP/13023199448-00022a88", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/13023199448-00022a88", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] ExecIf("SIP/13023199448-00022a88", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s@macro-hangupcall:4] NoOp("SIP/13023199448-00022a88", "{
-- "status": 200,
-- "data": {
-- "message": "Success",
-- "a": "hangup",
-- "hash": "a63e26ac2487ac3db2c0db2776314ab7"
-- }
-- }") in new stack
-- Executing [s@macro-hangupcall:5] Hangup("SIP/13023199448-00022a88", "") in new stack
== Spawn extension (macro-hangupcall, s, 5) exited non-zero on 'SIP/13023199448-00022a88' in macro 'hangupcall'
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/13023199448-00022a88'
== MixMonitor close filestream (mixed)
== End MixMonitor Recording Local/02380936904549@from-internal-00000668;2
Scheduling destruction of SIP dialog '52ce80a2603b43a35fd9fdfc61bbdb46@sip.riccontel.com' in 32000 ms (Method: INVITE)
set_destination: Parsing <sip:380936904549@87.118.127.249:5060> for address/port to send to
set_destination: set destination to 87.118.127.249:5060
Reliably Transmitting (NAT) to 87.118.127.249:5060:
BYE sip:380936904549@87.118.127.249:5060 SIP/2.0
Via: SIP/2.0/UDP 54.191.199.158:5060;branch=z9hG4bK2e0797cc;rport
Max-Forwards: 70
From: <sip:14164681@sip.riccontel.com>;tag=as7db3332e
To: <sip:380936904549@sip.riccontel.com>;tag=as562bfec4
Call-ID: 52ce80a2603b43a35fd9fdfc61bbdb46@sip.riccontel.com
CSeq: 104 BYE
User-Agent: dlink 12-3892-6657-1.3.3.198-ON201LW
Authorization: Digest username="14164681", realm="asterisk", algorithm=MD5, uri="sip:380936904549@87.118.127.249:5060", nonce="05e8d5ce", response="c453948b3e36d3a4bfc683ede6c57013"
X-Asterisk-HangupCause: Normal Clearing
X-Asterisk-HangupCauseCode: 16
Content-Length: 0
---
[2018-09-25 10:40:51] NOTICE[25583]: pbx_spool.c:427 attempt_thread: Call completed to Local/02380936904549@from-internal


Sergey
25.09.2018
10:46:08
кажется, я что-то пропустил, пока отходил от компьютера ))

Google

Sailor
25.09.2018
10:46:51
не работает Chanel /sip
* не звонит
в репорте записи не появляются

Sergey
25.09.2018
10:47:56
Так не звонит или записи не появляются? Это, как говорят у них в Одессе, две большие разницы )))

Sailor
25.09.2018
10:48:06

Yuriy
25.09.2018
10:49:19
Собственно у вас сам астеирск хенгапает звонок
Executing [h@macro-dialout-trunk:1] Macro("Local/02380936904549@from-internal-00000668;2", "hangupcall,") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("Local/02380936904549@from-internal-00000668;2", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
Даже не начав вызов


Ruslan
25.09.2018
10:52:39
не работает Chanel /sip
очень тяжело так, сделай кастомный контекст, для проверки или пихни внутрь на сип или очеред, на более традиционные сущности в астере, имхо быстрее астер с нуля настроить второй без фпбкс.

Sailor
25.09.2018
10:53:29
я разобрался в общем
заработало
всем спасибо

Sergey
25.09.2018
10:55:07

Роман
25.09.2018
10:56:53

Sailor
25.09.2018
10:57:05
Контекстом
Я просто не телефонийщик , но иногда задачи бывают...

Artem
25.09.2018
10:58:01
подскажите днищу по какому протоколу голос в астериске ходит ?
l4 udp, а выше уровень кто ?

Sergey
25.09.2018
11:00:04

Ruslan
25.09.2018
11:00:33

Artem
25.09.2018
11:01:14
по rtp ?
где может быть собака зарыта, звоню на сотовые - все ок голос в 2 стороны, звоню на город я их слышу а они меня нет