Замена подстроки в строке в Asterisk

В данной заметке я приведу пример макроса, который меняет подстроку в строке в Asterisk. Собственно сам макрос:

[macro-replace]
;
; ${ARG1} - String source
; ${ARG2} - Chars to replace
; ${ARG3} - Chars to replace with
;
exten => s,1,NoOp(Replacing ${ARG2} for ${ARG3} in ${ARG1})
exten => s,n,Set(str=${ARG1})
exten => s,n,Set(find=${ARG2})
exten => s,n,Set(replace=${ARG3})
exten => s,n,Set(i=0)
exten => s,n,Set(length=${LEN(${str})})
exten => s,n,While($[${i} < ${length}])
exten => s,n,GotoIf($["${str:${i}:1}" != "${find}"]?continue)
exten => s,n,Set(pre=)
exten => s,n,GotoIf($["${i}" = "0"]?post)
exten => s,n,Set(pre=${str:0:${i}})
exten => s,n(post),Set(post=)
exten => s,n,GotoIf($["${i}" = $[${length} - 1]]?write)
exten => s,n,Set(post=${str:$[${i} + 1]})
exten => s,n(write),Set(str=${pre}${replace}${post})
exten => s,n(continue),Set(i=$[${i} + 1])
exten => s,n,EndWhile
exten => s,n,Set(REPLACERESULT=${str})
Рекомендуем почитать
Elastix 3.0. Первый запуск

Итак, с горем пополам мне удалось сделать первый запуск Elastix 3.0 Stable. Сразу скажу, что система меня не очень порадовала. Читать дальше...

Модуль Простые Звонки для Asterisk и NEOPbx

Как я уже писал ранее, в данный момент одна из задач - это интеграция модуля Простые Звонки в IP АТС Читать дальше...

AMI Launcher for Asterisk / Elastix / FreePBX

Давно хотел написать универсальное приложение для Asterisk, которое могло бы запускать внешнее приложение после поднятия трубки оператором. "Для чего это Читать дальше...

Простые звонки и NEOPbx

В ближайшее время заканчиваю работу над интеграцией модуля Простые звонки для IP АТС NEOPbx. «Простые звонки» - это компьютерная программа, Читать дальше...

Поделиться

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *