Merge branch 'master' into send-event-on-incoming-ack
This commit is contained in:
commit
5644b53a57
183
.drone.yml
183
.drone.yml
|
@ -1,183 +0,0 @@
|
|||
---
|
||||
kind: pipeline
|
||||
name: unit-tests
|
||||
|
||||
steps:
|
||||
- name: bootstrap
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
commands:
|
||||
- cat /proc/sys/kernel/core_pattern
|
||||
- ./bootstrap.sh -j
|
||||
|
||||
- name: configure
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
environment:
|
||||
REPOTOKEN:
|
||||
from_secret: repotoken
|
||||
commands:
|
||||
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
|
||||
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev
|
||||
- export REPOTOKEN=''
|
||||
- rm -rf /etc/apt/auth.conf
|
||||
- git clone https://github.com/freeswitch/sofia-sip.git
|
||||
- cd sofia-sip && ./autogen.sh && ./configure.gnu && make -j`nproc` && make install && cd ..
|
||||
- echo 'codecs/mod_openh264' >> modules.conf
|
||||
- sed -i '/applications\\/mod_http_cache/s/^#//g' modules.conf
|
||||
- sed -i '/event_handlers\\/mod_rayo/s/^#//g' modules.conf
|
||||
- sed -i '/formats\\/mod_opusfile/s/^#//g' modules.conf
|
||||
- sed -i '/languages\\/mod_lua/s/^#//g' modules.conf
|
||||
- export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
|
||||
- ./configure --enable-address-sanitizer --enable-fake-dlclose
|
||||
|
||||
- name: build
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
environment:
|
||||
REPOTOKEN:
|
||||
from_secret: repotoken
|
||||
commands:
|
||||
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
|
||||
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev
|
||||
- export REPOTOKEN=''
|
||||
- rm -rf /etc/apt/auth.conf
|
||||
- cd sofia-sip && make install && cd ..
|
||||
- echo '#!/bin/bash\nmake -j`nproc --all` |& tee ./unit-tests-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./build-status.txt\n' > build.sh
|
||||
- chmod +x build.sh
|
||||
- ./build.sh
|
||||
|
||||
- name: run-tests
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
environment:
|
||||
REPOTOKEN:
|
||||
from_secret: repotoken
|
||||
commands:
|
||||
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
|
||||
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev
|
||||
- export REPOTOKEN=''
|
||||
- rm -rf /etc/apt/auth.conf
|
||||
- cd sofia-sip && make install && cd ..
|
||||
- make install || true
|
||||
- cd tests/unit
|
||||
- export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
|
||||
- ./run-tests.sh
|
||||
- ls -la /cores
|
||||
- mkdir logs && (mv log_run-tests_*.html logs || true) && (mv backtrace_*.txt logs || true)
|
||||
- echo 0 > run-tests-status.txt
|
||||
- ./collect-test-logs.sh && exit 0 || echo 'Some tests failed'
|
||||
- echo 1 > run-tests-status.txt
|
||||
- cd logs && ls -la
|
||||
|
||||
- name: notify
|
||||
image: signalwire/drone-notify
|
||||
pull: always
|
||||
environment:
|
||||
SLACK_WEBHOOK_URL:
|
||||
from_secret: slack_webhook_url
|
||||
ENV_FILE:
|
||||
from_secret: notify_env
|
||||
commands:
|
||||
- /root/unit-tests-notify.sh
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: scan-build
|
||||
|
||||
steps:
|
||||
- name: bootstrap
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
commands:
|
||||
- ./bootstrap.sh -j
|
||||
|
||||
- name: configure
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
environment:
|
||||
REPOTOKEN:
|
||||
from_secret: repotoken
|
||||
commands:
|
||||
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
|
||||
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libspandsp-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libsofia-sip-ua-dev libspandsp3-dev
|
||||
- export REPOTOKEN=''
|
||||
- rm -rf /etc/apt/auth.conf
|
||||
- cp build/modules.conf.most modules.conf
|
||||
#Enable/Uncomment mods
|
||||
- echo 'codecs/mod_openh264' >> modules.conf
|
||||
- sed -i "/mod_mariadb/s/^#//g" modules.conf
|
||||
- sed -i "/mod_v8/s/^#//g" modules.conf
|
||||
#Disable/Comment out mods
|
||||
- sed -i '/mod_ilbc/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_isac/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_mp4/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_mongo/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_pocketsphinx/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_sangoma_codec/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_siren/s/^/#/g' modules.conf
|
||||
#Comment out mods for a while
|
||||
- sed -i '/mod_avmd/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_basic/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_cdr_mongodb/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_cv/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_erlang_event/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_perl/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_rtmp/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_unimrcp/s/^/#/g' modules.conf
|
||||
- sed -i '/mod_xml_rpc/s/^/#/g' modules.conf
|
||||
- ./configure
|
||||
|
||||
- name: scan-build
|
||||
image: signalwire/freeswitch-public-base:bullseye
|
||||
pull: always
|
||||
environment:
|
||||
REPOTOKEN:
|
||||
from_secret: repotoken
|
||||
commands:
|
||||
- echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf
|
||||
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libspandsp-dev
|
||||
- DEBIAN_FRONTEND=noninteractive apt-get -yq install libsofia-sip-ua-dev libspandsp3-dev
|
||||
- export REPOTOKEN=''
|
||||
- rm -rf /etc/apt/auth.conf
|
||||
- mkdir -p scan-build
|
||||
- echo '#!/bin/bash\nscan-build-11 -o ./scan-build/ make -j`nproc --all` |& tee ./scan-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./scan-build-status.txt\n' > scan.sh
|
||||
- chmod +x scan.sh
|
||||
- ./scan.sh
|
||||
- exitstatus=`cat ./scan-build-status.txt`
|
||||
- echo "*** Exit status is $exitstatus"
|
||||
|
||||
- name: notify
|
||||
image: signalwire/drone-notify
|
||||
pull: always
|
||||
environment:
|
||||
SLACK_WEBHOOK_URL:
|
||||
from_secret: slack_webhook_url
|
||||
ENV_FILE:
|
||||
from_secret: notify_env
|
||||
commands:
|
||||
- /root/scan-build-notify.sh
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: signature
|
||||
hmac: 780e4aaee61e3683ea4a8d6fe5131f7c9e62ebad727546013f18df0fca80d705
|
||||
|
||||
...
|
|
@ -0,0 +1,24 @@
|
|||
ARG BUILDER_IMAGE=signalwire/freeswitch-public-ci-base:bookworm-amd64
|
||||
|
||||
FROM ${BUILDER_IMAGE}
|
||||
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
LABEL org.opencontainers.image.authors="${MAINTAINER_EMAIL}"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
COPY --from=sofia-sip / /usr/src/sofia-sip
|
||||
COPY --from=freeswitch / /usr/src/freeswitch
|
||||
|
||||
RUN cd /usr/src/freeswitch && \
|
||||
./ci.sh -t unit-test -a configure -c sofia-sip -p "/usr/src/sofia-sip" && \
|
||||
./ci.sh -t unit-test -a build -c sofia-sip -p "/usr/src/sofia-sip" && \
|
||||
./ci.sh -t unit-test -a install -c sofia-sip -p "/usr/src/sofia-sip" && \
|
||||
./ci.sh -t unit-test -a configure -c freeswitch -p "/usr/src/freeswitch" && \
|
||||
./ci.sh -t unit-test -a build -c freeswitch -p "/usr/src/freeswitch" && \
|
||||
./ci.sh -t unit-test -a install -c freeswitch -p "/usr/src/freeswitch"
|
||||
|
||||
WORKDIR /usr/src/freeswitch/tests/unit
|
||||
|
||||
ENTRYPOINT ["/usr/src/freeswitch/tests/unit/run-tests.sh"]
|
|
@ -0,0 +1,103 @@
|
|||
ARG BUILDER_IMAGE=debian:bookworm-20240513
|
||||
|
||||
FROM ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bookworm
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,103 @@
|
|||
ARG BUILDER_IMAGE=debian:bookworm-20240513
|
||||
|
||||
FROM ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bookworm
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm32v7/debian:bookworm-20240513
|
||||
|
||||
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bookworm
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/rpi/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm32v7/debian:bookworm-20240513
|
||||
|
||||
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bookworm
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm64v8/debian:bookworm-20240513
|
||||
|
||||
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bookworm
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm64v8/debian:bookworm-20240513
|
||||
|
||||
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bookworm
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=debian:bullseye-20240513
|
||||
|
||||
FROM ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bullseye
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=debian:bullseye-20240513
|
||||
|
||||
FROM ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bullseye
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm32v7/debian:bullseye-20240513
|
||||
|
||||
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bullseye
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-release ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/rpi/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm32v7/debian:bullseye-20240513
|
||||
|
||||
FROM --platform=linux/arm32 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bullseye
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a armhf ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/rpi/debian-dev/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm64v8/debian:bullseye-20240513
|
||||
|
||||
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bullseye
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-release ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-release/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,102 @@
|
|||
ARG BUILDER_IMAGE=arm64v8/debian:bullseye-20240513
|
||||
|
||||
FROM --platform=linux/arm64 ${BUILDER_IMAGE} AS builder
|
||||
|
||||
ARG MAINTAINER_NAME="Andrey Volk"
|
||||
ARG MAINTAINER_EMAIL="andrey@signalwire.com"
|
||||
|
||||
# Credentials
|
||||
ARG REPO_DOMAIN=freeswitch.signalwire.com
|
||||
ARG REPO_USERNAME=user
|
||||
|
||||
ARG BUILD_NUMBER=42
|
||||
ARG GIT_SHA=0000000000
|
||||
|
||||
ARG DATA_DIR=/data
|
||||
ARG CODENAME=bullseye
|
||||
ARG GPG_KEY="/usr/share/keyrings/signalwire-freeswitch-repo.gpg"
|
||||
|
||||
MAINTAINER "${MAINTAINER_NAME} <${MAINTAINER_EMAIL}>"
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
RUN apt-get -q update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get -yq install \
|
||||
apt-transport-https \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cmake \
|
||||
curl \
|
||||
debhelper \
|
||||
devscripts \
|
||||
dh-autoreconf \
|
||||
dos2unix \
|
||||
doxygen \
|
||||
git \
|
||||
graphviz \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
lsb-release \
|
||||
pkg-config \
|
||||
wget
|
||||
|
||||
RUN update-ca-certificates --fresh
|
||||
|
||||
RUN echo "export CODENAME=${CODENAME}" | tee ~/.env && \
|
||||
chmod +x ~/.env
|
||||
|
||||
RUN . ~/.env && cat <<EOF > /etc/apt/sources.list.d/freeswitch.list
|
||||
deb [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
deb-src [signed-by=${GPG_KEY}] https://${REPO_DOMAIN}/repo/deb/debian-unstable ${CODENAME} main
|
||||
EOF
|
||||
|
||||
RUN git config --global --add safe.directory '*' \
|
||||
&& git config --global user.name "${MAINTAINER_NAME}" \
|
||||
&& git config --global user.email "${MAINTAINER_EMAIL}"
|
||||
|
||||
# Bootstrap and Build
|
||||
COPY . ${DATA_DIR}
|
||||
WORKDIR ${DATA_DIR}
|
||||
RUN echo "export VERSION=$(cat ./build/next-release.txt | tr -d '\n')" | tee -a ~/.env
|
||||
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
RUN . ~/.env && ./debian/util.sh prep-create-dsc -a arm64 ${CODENAME}
|
||||
|
||||
RUN --mount=type=secret,id=REPO_PASSWORD,required=true \
|
||||
printf "machine ${REPO_DOMAIN} " > /etc/apt/auth.conf && \
|
||||
printf "login ${REPO_USERNAME} " >> /etc/apt/auth.conf && \
|
||||
printf "password " >> /etc/apt/auth.conf && \
|
||||
cat /run/secrets/REPO_PASSWORD >> /etc/apt/auth.conf && \
|
||||
sha512sum /run/secrets/REPO_PASSWORD && \
|
||||
curl \
|
||||
--fail \
|
||||
--netrc-file /etc/apt/auth.conf \
|
||||
--output ${GPG_KEY} \
|
||||
https://${REPO_DOMAIN}/repo/deb/debian-unstable/signalwire-freeswitch-repo.gpg && \
|
||||
file ${GPG_KEY} && \
|
||||
apt-get --quiet update && \
|
||||
mk-build-deps \
|
||||
--install \
|
||||
--remove debian/control \
|
||||
--tool "apt-get --yes --no-install-recommends" && \
|
||||
apt-get --yes --fix-broken install && \
|
||||
rm -f /etc/apt/auth.conf
|
||||
|
||||
ENV DEB_BUILD_OPTIONS="parallel=1"
|
||||
RUN . ~/.env && dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||
RUN . ~/.env && ./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||
|
||||
RUN dpkg-source \
|
||||
--diff-ignore=.* \
|
||||
--compression=xz \
|
||||
--compression-level=9 \
|
||||
--build \
|
||||
. \
|
||||
&& debuild -b -us -uc \
|
||||
&& mkdir OUT \
|
||||
&& mv -v ../*.{deb,dsc,changes,tar.*} OUT/.
|
||||
|
||||
# Artifacts image (mandatory part, the resulting image must have a single filesystem layer)
|
||||
FROM scratch
|
||||
COPY --from=builder /data/OUT/ /
|
|
@ -0,0 +1,215 @@
|
|||
name: Build and Distribute
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- v1.10
|
||||
paths:
|
||||
- "**"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
freeswitch_ref:
|
||||
description: 'FreeSWITCH repository ref'
|
||||
required: true
|
||||
default: master
|
||||
type: string
|
||||
release:
|
||||
description: 'FreeSWITCH release type'
|
||||
type: choice
|
||||
required: true
|
||||
default: unstable
|
||||
options:
|
||||
- release
|
||||
- unstable
|
||||
publish:
|
||||
description: 'Publish build data'
|
||||
required: true
|
||||
default: false
|
||||
type: boolean
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.head_ref || github.ref }}
|
||||
|
||||
jobs:
|
||||
preconfig:
|
||||
name: 'Preconfig'
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
deb: ${{ steps.deb.outputs.excludes }}
|
||||
release: ${{ steps.release.outputs.release }}
|
||||
steps:
|
||||
- name: Generate Matrix excludes for DEB
|
||||
id: deb
|
||||
run: |
|
||||
JSON="[]"
|
||||
|
||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||
JSON=$(jq -n '[
|
||||
{
|
||||
"version": "bookworm",
|
||||
"platform": {
|
||||
"name": "arm64v8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"version": "bullseye",
|
||||
"platform": {
|
||||
"name": "amd64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"version": "bullseye",
|
||||
"platform": {
|
||||
"name": "arm32v7"
|
||||
}
|
||||
}
|
||||
]')
|
||||
fi
|
||||
|
||||
echo "excludes=$(echo $JSON | jq -c .)" | tee -a $GITHUB_OUTPUT
|
||||
|
||||
- name: Get release type based on branch
|
||||
id: release
|
||||
run: |
|
||||
if [[ '${{ github.event_name }}' == 'pull_request' ]]; then
|
||||
if [[ '${{ github.base_ref }}' == 'v1.10' ]]; then
|
||||
echo 'release=release' | tee -a $GITHUB_OUTPUT
|
||||
else
|
||||
echo 'release=unstable' | tee -a $GITHUB_OUTPUT
|
||||
fi
|
||||
elif [[ '${{ github.event_name }}' == 'workflow_dispatch' ]]; then
|
||||
echo 'release=${{ inputs.release }}' | tee -a $GITHUB_OUTPUT
|
||||
elif [[ '${{ github.ref }}' == 'refs/heads/v1.10' ]]; then
|
||||
echo 'release=release' | tee -a $GITHUB_OUTPUT
|
||||
else
|
||||
echo 'release=unstable' | tee -a $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
get-nonce:
|
||||
name: 'Get Nonce for token'
|
||||
runs-on: freeswitch-repo-auth-client
|
||||
outputs:
|
||||
nonce: ${{ steps.get-nonce.outputs.nonce }}
|
||||
steps:
|
||||
- name: Get Nonce
|
||||
id: get-nonce
|
||||
uses: signalwire/actions-template/.github/actions/repo-auth-client@main
|
||||
with:
|
||||
mode: nonce
|
||||
|
||||
issue-token:
|
||||
name: 'Issue temporary token'
|
||||
runs-on: ubuntu-latest
|
||||
needs: get-nonce
|
||||
outputs:
|
||||
token: ${{ steps.issue-token.outputs.token }}
|
||||
steps:
|
||||
- name: Issue Token
|
||||
id: issue-token
|
||||
uses: signalwire/actions-template/.github/actions/repo-auth-client@main
|
||||
env:
|
||||
NONCE: ${{ needs.get-nonce.outputs.nonce }}
|
||||
with:
|
||||
mode: issue
|
||||
|
||||
deb-public:
|
||||
name: 'DEB-PUBLIC'
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
needs:
|
||||
- preconfig
|
||||
- issue-token
|
||||
uses: signalwire/actions-template/.github/workflows/cicd-docker-build-and-distribute.yml@main
|
||||
strategy:
|
||||
# max-parallel: 1
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- debian
|
||||
version:
|
||||
- bookworm
|
||||
- bullseye
|
||||
platform:
|
||||
- name: amd64
|
||||
runner: ubuntu-latest
|
||||
- name: arm32v7
|
||||
runner: linux-arm64-4-core-public
|
||||
- name: arm64v8
|
||||
runner: linux-arm64-4-core-public
|
||||
release:
|
||||
- ${{ needs.preconfig.outputs.release }}
|
||||
exclude: ${{ fromJson(needs.preconfig.outputs.deb) }}
|
||||
with:
|
||||
RUNNER: ${{ matrix.platform.runner }}
|
||||
REF: ${{ inputs.freeswitch_ref }}
|
||||
ARTIFACTS_PATTERN: '.*\.(deb|dsc|changes|tar.bz2|tar.gz|tar.lzma|tar.xz)$'
|
||||
DOCKERFILE: .github/docker/${{ matrix.os }}/${{ matrix.version }}/${{ matrix.platform.name }}/public.${{ matrix.release }}.Dockerfile
|
||||
MAINTAINER: 'Andrey Volk <andrey@signalwire.com>'
|
||||
META_FILE_PATH_PREFIX: /var/www/freeswitch/public/${{ matrix.release }}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}
|
||||
PLATFORM: ${{ matrix.platform.name }}
|
||||
REPO_DOMAIN: 'freeswitch.signalwire.com'
|
||||
TARGET_ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-${{ matrix.release }}-artifact
|
||||
UPLOAD_BUILD_ARTIFACTS: >-
|
||||
${{
|
||||
(github.event.pull_request.head.repo.full_name == github.repository) &&
|
||||
(
|
||||
(
|
||||
github.event_name != 'pull_request' &&
|
||||
github.event_name != 'workflow_dispatch'
|
||||
) ||
|
||||
(github.event_name == 'workflow_dispatch' && inputs.publish)
|
||||
)
|
||||
}}
|
||||
secrets:
|
||||
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
|
||||
HOSTNAME: ${{ secrets.HOSTNAME }}
|
||||
PROXY_URL: ${{ secrets.PROXY_URL }}
|
||||
USERNAME: ${{ secrets.USERNAME }}
|
||||
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }}
|
||||
REPO_USERNAME: 'SWUSERNAME'
|
||||
REPO_PASSWORD: ${{ needs.issue-token.outputs.token }}
|
||||
|
||||
revoke-token:
|
||||
name: 'Revoke temporary token'
|
||||
runs-on: ubuntu-latest
|
||||
# if: always()
|
||||
needs:
|
||||
- issue-token
|
||||
- deb-public
|
||||
steps:
|
||||
- name: Revoke Token
|
||||
id: revoke-token
|
||||
uses: signalwire/actions-template/.github/actions/repo-auth-client@main
|
||||
env:
|
||||
TOKEN: ${{ needs.issue-token.outputs.token }}
|
||||
with:
|
||||
mode: revoke
|
||||
|
||||
meta:
|
||||
name: 'Publish build data to meta-repo'
|
||||
if: >-
|
||||
${{
|
||||
(github.event.pull_request.head.repo.full_name == github.repository) &&
|
||||
(
|
||||
(
|
||||
github.event_name != 'pull_request' &&
|
||||
github.event_name != 'workflow_dispatch'
|
||||
) ||
|
||||
(github.event_name == 'workflow_dispatch' && inputs.publish)
|
||||
)
|
||||
}}
|
||||
needs:
|
||||
- deb-public
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
uses: signalwire/actions-template/.github/workflows/meta-repo-content.yml@main
|
||||
with:
|
||||
META_CONTENT: '/var/www/freeswitch/public/{release,unstable}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}'
|
||||
META_REPO: signalwire/bamboo_gha_trigger
|
||||
META_REPO_BRANCH: trigger/freeswitch/${{ github.ref_name }}
|
||||
secrets:
|
||||
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
|
|
@ -0,0 +1,103 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- v1.10
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
freeswitch_ref:
|
||||
description: 'FreeSWITCH repository ref'
|
||||
required: false
|
||||
type: string
|
||||
sofia-sip_ref:
|
||||
description: 'Sofia-Sip repository ref'
|
||||
required: false
|
||||
type: string
|
||||
dind:
|
||||
description: 'Run tests using Docker-in-Docker'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
env:
|
||||
CI_BASE_STATIC_IMAGE: signalwire/freeswitch-public-ci-base:bookworm-amd64
|
||||
DOCKER_BUILD_SUMMARY: false
|
||||
DOCKER_BUILD_CHECKS_ANNOTATIONS: false
|
||||
DOCKER_BUILD_RECORD_UPLOAD: false
|
||||
|
||||
jobs:
|
||||
unit-tests-pre-config:
|
||||
if: ${{ !inputs.dind }}
|
||||
name: "Unit-tests pre-config"
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
TOTAL_GROUPS: 2
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
container-image: ${{ steps.set-vars.outputs.container-image }}
|
||||
working-directory: ${{ steps.set-vars.outputs.working-directory }}
|
||||
tests-only: ${{ steps.set-vars.outputs.tests-only }}
|
||||
steps:
|
||||
- id: set-matrix
|
||||
shell: bash
|
||||
run: |
|
||||
MATRIX=$(jq -c -n --argjson groups "${{ env.TOTAL_GROUPS }}" \
|
||||
'{
|
||||
include: [range(1; $groups + 1) | {group: ., total: $groups}]
|
||||
}')
|
||||
echo "matrix=$MATRIX" | tee -a $GITHUB_OUTPUT
|
||||
- id: set-vars
|
||||
shell: bash
|
||||
run: |
|
||||
echo "tests-only=false" >> $GITHUB_OUTPUT
|
||||
echo "working-directory=freeswitch/tests/unit" >> $GITHUB_OUTPUT
|
||||
echo "container-image=$CI_BASE_STATIC_IMAGE" >> $GITHUB_OUTPUT
|
||||
|
||||
unit-tests:
|
||||
if: ${{ !inputs.dind }}
|
||||
name: "Unit-tests (group ${{ matrix.group }})"
|
||||
needs:
|
||||
- unit-tests-pre-config
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{ fromJson(needs.unit-tests-pre-config.outputs.matrix) }}
|
||||
uses: ./.github/workflows/unit-test.yml
|
||||
with:
|
||||
total-groups: ${{ matrix.total }}
|
||||
current-group: ${{ matrix.group }}
|
||||
container-image: ${{ needs.unit-tests-pre-config.outputs.container-image }}
|
||||
working-directory: ${{ needs.unit-tests-pre-config.outputs.working-directory }}
|
||||
tests-only: ${{ fromJson(needs.unit-tests-pre-config.outputs.tests-only) }}
|
||||
secrets: inherit
|
||||
|
||||
validate-unit-tests:
|
||||
if: ${{ always() && !inputs.dind }}
|
||||
name: "Validate Unit-tests"
|
||||
needs: unit-tests
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check unit tests status
|
||||
run: |
|
||||
if [ "${{ needs.unit-tests.result }}" != "success" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
unit-tests-dind:
|
||||
if: ${{ inputs.dind }}
|
||||
name: "Unit-tests D-in-D"
|
||||
uses: ./.github/workflows/unit-test-dind.yml
|
||||
with:
|
||||
freeswitch_ref: ${{ inputs.freeswitch_ref }}
|
||||
sofia-sip_ref: ${{ inputs.sofia-sip_ref }}
|
||||
secrets: inherit
|
||||
|
||||
scan-build:
|
||||
name: "Scan Build"
|
||||
uses: ./.github/workflows/scan-build.yml
|
||||
secrets: inherit
|
|
@ -0,0 +1,99 @@
|
|||
name: Scan build (Static Analysis)
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
freeswitch_ref:
|
||||
description: 'FreeSWITCH repository ref'
|
||||
required: false
|
||||
type: string
|
||||
sofia-sip_ref:
|
||||
description: 'Sofia-Sip repository ref'
|
||||
required: false
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
scan-build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: signalwire/freeswitch-public-ci-base:bookworm-amd64
|
||||
options: --privileged
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
|
||||
steps:
|
||||
- name: Checkout Sofia-Sip
|
||||
if: inputs.sofia-sip_ref == ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: freeswitch/sofia-sip
|
||||
path: sofia-sip
|
||||
|
||||
- name: Checkout Sofia-Sip (via ref)
|
||||
if: inputs.sofia-sip_ref != ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: freeswitch/sofia-sip
|
||||
ref: ${{ inputs.sofia-sip_ref }}
|
||||
path: sofia-sip
|
||||
|
||||
- name: Checkout FreeSWITCH (via ref)
|
||||
if: inputs.freeswitch_ref != ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.freeswitch_ref }}
|
||||
path: freeswitch
|
||||
|
||||
- name: Checkout FreeSWITCH
|
||||
if: inputs.freeswitch_ref == ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: freeswitch
|
||||
|
||||
- name: Configure, Build and Install Sofia-Sip
|
||||
shell: bash
|
||||
working-directory: freeswitch
|
||||
run: |
|
||||
./ci.sh -t scan-build -a configure -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
|
||||
./ci.sh -t scan-build -a build -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
|
||||
./ci.sh -t scan-build -a install -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
|
||||
|
||||
- name: Configure FreeSWITCH
|
||||
shell: bash
|
||||
working-directory: freeswitch
|
||||
run: |
|
||||
./ci.sh -t scan-build -a configure -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
|
||||
|
||||
- name: Run scan-build analysis
|
||||
shell: bash
|
||||
working-directory: freeswitch
|
||||
run: |
|
||||
./ci.sh -t scan-build -a build -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
|
||||
|
||||
- name: Check analysis results
|
||||
if: always()
|
||||
shell: bash
|
||||
working-directory: freeswitch
|
||||
run: |
|
||||
./ci.sh -t scan-build -a validate -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
|
||||
|
||||
- name: Upload Scan-Build logs
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: scan-build-logs
|
||||
path: freeswitch/scan-build
|
||||
if-no-files-found: ignore
|
||||
compression-level: 9
|
||||
|
||||
- name: Notify run tests result to slack
|
||||
if: |
|
||||
failure() &&
|
||||
github.event_name == 'push' &&
|
||||
(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10')
|
||||
uses: signalwire/actions-template/.github/actions/slack@main
|
||||
with:
|
||||
CHANNEL: ${{ secrets.SLACK_DEVOPS_CI_CHANNEL }}
|
||||
MESSAGE: Scan-Build ${{ github.repository }} > <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>. Static analysis failed.
|
||||
env:
|
||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
@ -0,0 +1,100 @@
|
|||
name: Unit-tests D-in-D
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
freeswitch_ref:
|
||||
description: 'FreeSWITCH repository ref'
|
||||
required: false
|
||||
type: string
|
||||
sofia-sip_ref:
|
||||
description: 'Sofia-Sip repository ref'
|
||||
required: false
|
||||
type: string
|
||||
|
||||
env:
|
||||
MAX_CONTAINERS: 8
|
||||
NUM_CPU_PER_CONTAINER: 1
|
||||
DOCKER_BUILD_SUMMARY: false
|
||||
DOCKER_BUILD_CHECKS_ANNOTATIONS: false
|
||||
DOCKER_BUILD_RECORD_UPLOAD: false
|
||||
|
||||
jobs:
|
||||
unit-tests:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: signalwire/freeswitch-public-ci-base:bookworm-amd64
|
||||
options: --privileged
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
ASAN_OPTIONS: log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
|
||||
|
||||
steps:
|
||||
- name: Checkout Sofia-Sip (via ref)
|
||||
if: inputs.sofia-sip_ref != ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: freeswitch/sofia-sip
|
||||
ref: ${{ inputs.sofia-sip_ref }}
|
||||
path: sofia-sip
|
||||
|
||||
- name: Checkout Sofia-Sip
|
||||
if: inputs.sofia-sip_ref == ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: freeswitch/sofia-sip
|
||||
path: sofia-sip
|
||||
|
||||
- name: Checkout FreeSWITCH (via ref)
|
||||
if: inputs.freeswitch_ref != ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.freeswitch_ref }}
|
||||
path: freeswitch
|
||||
|
||||
- name: Checkout FreeSWITCH
|
||||
if: inputs.freeswitch_ref == ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: freeswitch
|
||||
|
||||
- name: Run Unit-Test containers and collect artifacts
|
||||
id: unit_tests
|
||||
shell: bash
|
||||
run: |
|
||||
echo "logs_path=${GITHUB_WORKSPACE}/freeswitch/tests/unit/logs" >> $GITHUB_OUTPUT
|
||||
|
||||
"${GITHUB_WORKSPACE}/freeswitch/tests/unit/run-tests-docker.sh" \
|
||||
--base-image signalwire/freeswitch-public-ci-base:bookworm-amd64 \
|
||||
--cpus ${{ env.NUM_CPU_PER_CONTAINER }} \
|
||||
--image-tag ci.local \
|
||||
--max-containers ${{ env.MAX_CONTAINERS }} \
|
||||
--output-dir "${GITHUB_WORKSPACE}/freeswitch/tests/unit/logs" \
|
||||
--sofia-sip-path "${GITHUB_WORKSPACE}/sofia-sip" \
|
||||
--freeswitch-path "${GITHUB_WORKSPACE}/freeswitch"
|
||||
|
||||
test -d "/cores" && ls -lah /cores
|
||||
|
||||
cd "${GITHUB_WORKSPACE}/freeswitch/tests/unit/" && \
|
||||
./collect-test-logs.sh --dir logs --print
|
||||
|
||||
- name: Upload Unit-Test logs
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-results-${{ github.sha }}-${{ github.run_number }}
|
||||
path: ${{ steps.unit_tests.outputs.logs_path }}
|
||||
if-no-files-found: ignore
|
||||
compression-level: 9
|
||||
|
||||
- name: Notify run tests result to slack
|
||||
if: |
|
||||
failure() &&
|
||||
github.event_name == 'push' &&
|
||||
(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10')
|
||||
uses: signalwire/actions-template/.github/actions/slack@main
|
||||
with:
|
||||
CHANNEL: ${{ secrets.SLACK_DEVOPS_CI_CHANNEL }}
|
||||
MESSAGE: Unit-Tests ${{ github.repository }} > <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>. Some tests are failing.
|
||||
env:
|
||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
@ -0,0 +1,136 @@
|
|||
name: Unit tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
total-groups:
|
||||
description: 'Total number of test groups'
|
||||
required: true
|
||||
type: number
|
||||
default: 1
|
||||
current-group:
|
||||
description: 'Current test group number'
|
||||
required: true
|
||||
type: number
|
||||
default: 1
|
||||
freeswitch_ref:
|
||||
description: 'FreeSWITCH repository ref'
|
||||
required: false
|
||||
type: string
|
||||
sofia-sip_ref:
|
||||
description: 'Sofia-Sip repository ref'
|
||||
required: false
|
||||
type: string
|
||||
container-image:
|
||||
description: 'Container image to use for running tests'
|
||||
required: false
|
||||
type: string
|
||||
default: 'signalwire/freeswitch-public-ci-base:bookworm-amd64'
|
||||
working-directory:
|
||||
description: 'Working directory for running tests'
|
||||
required: false
|
||||
type: string
|
||||
default: 'freeswitch/tests/unit'
|
||||
tests-only:
|
||||
description: 'Run only tests, skip other tasks'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
unit-test:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ inputs.container-image }}
|
||||
options: --privileged
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
ASAN_OPTIONS: log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
|
||||
|
||||
steps:
|
||||
- name: Override core_pattern
|
||||
shell: bash
|
||||
run: |
|
||||
echo '/cores/core.%s.%E.%e.%p.%t' > /proc/sys/kernel/core_pattern
|
||||
cat /proc/sys/kernel/core_pattern
|
||||
|
||||
- name: Checkout Sofia-Sip (via ref)
|
||||
if: ${{ !inputs.tests-only && inputs.sofia-sip_ref != '' }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: freeswitch/sofia-sip
|
||||
ref: ${{ inputs.sofia-sip_ref }}
|
||||
path: sofia-sip
|
||||
|
||||
- name: Checkout Sofia-Sip
|
||||
if: ${{ !inputs.tests-only && inputs.sofia-sip_ref == '' }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: freeswitch/sofia-sip
|
||||
path: sofia-sip
|
||||
|
||||
- name: Checkout FreeSWITCH (via ref)
|
||||
if: ${{ !inputs.tests-only && inputs.freeswitch_ref != '' }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.freeswitch_ref }}
|
||||
path: freeswitch
|
||||
|
||||
- name: Checkout FreeSWITCH
|
||||
if: ${{ !inputs.tests-only && inputs.freeswitch_ref == '' }}
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: freeswitch
|
||||
|
||||
- name: Configure, Build and Install Sofia-Sip
|
||||
if: ${{ !inputs.tests-only }}
|
||||
shell: bash
|
||||
working-directory: freeswitch
|
||||
run: |
|
||||
./ci.sh -t unit-test -a configure -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
|
||||
./ci.sh -t unit-test -a build -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
|
||||
./ci.sh -t unit-test -a install -c sofia-sip -p "$GITHUB_WORKSPACE/sofia-sip"
|
||||
|
||||
- name: Configure, Build and Install FreeSWITCH
|
||||
if: ${{ !inputs.tests-only }}
|
||||
shell: bash
|
||||
working-directory: freeswitch
|
||||
run: |
|
||||
./ci.sh -t unit-test -a configure -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
|
||||
./ci.sh -t unit-test -a build -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
|
||||
./ci.sh -t unit-test -a install -c freeswitch -p "$GITHUB_WORKSPACE/freeswitch"
|
||||
|
||||
- name: Run unit tests
|
||||
shell: bash
|
||||
working-directory: ${{ inputs.working-directory }}
|
||||
run: |
|
||||
./run-tests.sh ${{ inputs.total-groups }} ${{ inputs.current-group }} --output-dir logs || exit 1
|
||||
|
||||
- name: Collect unit test logs
|
||||
if: always()
|
||||
shell: bash
|
||||
working-directory: ${{ inputs.working-directory }}
|
||||
run: |
|
||||
test -d "/cores" && ls -lah /cores
|
||||
./collect-test-logs.sh --dir logs --print
|
||||
|
||||
- name: Upload Unit-Test logs
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-results-${{ github.sha }}-${{ github.run_number }}-${{ inputs.current-group }}-of-${{ inputs.total-groups }}
|
||||
path: ${{ inputs.working-directory }}/logs
|
||||
if-no-files-found: ignore
|
||||
compression-level: 9
|
||||
|
||||
- name: Notify run tests result to slack
|
||||
if: |
|
||||
failure() &&
|
||||
github.event_name == 'push' &&
|
||||
(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10')
|
||||
uses: signalwire/actions-template/.github/actions/slack@main
|
||||
with:
|
||||
CHANNEL: ${{ secrets.SLACK_DEVOPS_CI_CHANNEL }}
|
||||
MESSAGE: Unit-Tests ${{ github.repository }} > <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>. Some tests are failing.
|
||||
env:
|
||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
@ -0,0 +1,28 @@
|
|||
name: Windows
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
push:
|
||||
branches: [master, release]
|
||||
jobs:
|
||||
x64:
|
||||
runs-on: windows-2019
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Build
|
||||
run: msbuild Freeswitch.2017.sln -t:build -verbosity:minimal -property:Configuration=Release -property:Platform=x64
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: MSI Package
|
||||
path: D:\a\freeswitch\freeswitch\x64\*.msi
|
||||
if: contains(github.event.pull_request.title, ':upload-artifacts') || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/v1.10'
|
|
@ -175,7 +175,6 @@ BuildLog.htm
|
|||
|
||||
!/libs/win32/
|
||||
!/libs/speex/win32/
|
||||
!/src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/win32/
|
||||
*.suo
|
||||
*.sdf
|
||||
x64/
|
||||
|
@ -187,7 +186,7 @@ ipch/
|
|||
/w32/Setup/obj
|
||||
*dSYM*
|
||||
|
||||
/UpgradeLog.*
|
||||
/UpgradeLog*.*
|
||||
/_UpgradeReport_Files/
|
||||
*.aps
|
||||
/w32/Library/switch_version.inc
|
||||
|
@ -255,9 +254,6 @@ libs/sofia-sip*
|
|||
|
||||
src/mod/applications/mod_test/test/test_asr
|
||||
src/mod/applications/mod_test/test/test_tts
|
||||
src/mod/event_handlers/mod_rayo/test/test_iks
|
||||
src/mod/event_handlers/mod_rayo/test/test_nlsml
|
||||
src/mod/event_handlers/mod_rayo/test/test_srgs
|
||||
src/mod/applications/mod_http_cache/test/Makefile
|
||||
src/mod/applications/mod_http_cache/test/Makefile.in
|
||||
src/mod/applications/mod_http_cache/test/test-suite.log
|
||||
|
@ -266,7 +262,6 @@ src/mod/applications/mod_http_cache/test/test_aws.log
|
|||
src/mod/applications/mod_http_cache/test/test_aws.trs
|
||||
src/mod/formats/mod_sndfile/test/test_sndfile
|
||||
src/mod/formats/mod_sndfile/test/test_sndfile_conf
|
||||
src/mod/formats/mod_ssml/test/test_tts_format
|
||||
src/mod/*/*/test/*.log
|
||||
src/mod/*/*/test/*.trs
|
||||
src/mod/*/*/test/[0-9]*/*
|
||||
|
|
|
@ -191,8 +191,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_v8", "src\mod\languages
|
|||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_v8_skel", "src\mod\languages\mod_v8\mod_v8_skel.2017.vcxproj", "{8B754330-A434-4791-97E5-1EE67060BAC0}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr_tts\mod_cepstral\mod_cepstral.2017.vcxproj", "{692F6330-4D87-4C82-81DF-40DB5892636E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2017.vcxproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2017.vcxproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}"
|
||||
|
@ -218,8 +216,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sql
|
|||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2017.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2017.vcxproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2017.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2017.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"
|
||||
|
@ -413,10 +409,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sms", "src\mod\applicat
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xmlrpc-c", "xmlrpc-c", "{9DE35039-A8F6-4FBF-B1B6-EB527F802411}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsmlib", "src\mod\endpoints\mod_gsmopen\gsmlib\gsmlib-1.10-patched-13ubuntu\win32\gsmlib.2017.vcxproj", "{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_gsmopen", "src\mod\endpoints\mod_gsmopen\mod_gsmopen.2017.vcxproj", "{74B120FF-6935-4DFE-A142-CDB6BEA99C90}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_redis", "src\mod\applications\mod_redis\mod_redis.2017.vcxproj", "{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjpeg", "libs\win32\libjpeg\libjpeg.2017.vcxproj", "{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1}"
|
||||
|
@ -450,8 +442,6 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup.2017", "w32\Setup\Set
|
|||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_math_fixed_tables", "libs\win32\spandsp\make_math_fixed_tables.2017.vcxproj", "{2386B892-35F5-46CF-A0F0-10394D2FBF9B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcbt", "libs\win32\libcbt\libcbt.2017.vcxproj", "{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_cielab_luts", "libs\win32\spandsp\make_cielab_luts.2017.vcxproj", "{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "opus", "opus", "{ED2CA8B5-8E91-4296-A120-02BB0B674652}"
|
||||
|
@ -554,6 +544,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_core_db", "test
|
|||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_ivr_originate", "tests\unit\test_switch_ivr_originate.2017.vcxproj", "{69A7464A-9B0D-4804-A108-835229DACF58}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_core_codec", "tests\unit\test_switch_core_codec.2017.vcxproj", "{589A07E7-5DE5-49FD-A62C-27795B806AFB}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tts_format", "tests\unit\test_tts_format.2017.vcxproj", "{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_test", "src\mod\applications\mod_test\mod_test.2017.vcxproj", "{E9FF8127-D5F0-2398-59EB-702CE55F7800}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
All|Win32 = All|Win32
|
||||
|
@ -698,13 +694,6 @@ Global
|
|||
{8B754330-A434-4791-97E5-1EE67060BAC0}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B754330-A434-4791-97E5-1EE67060BAC0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B754330-A434-4791-97E5-1EE67060BAC0}.Release|x64.ActiveCfg = Release|x64
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.All|Win32.ActiveCfg = Release|x64
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.ActiveCfg = Release|x64
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.All|x64.Build.0 = Release|x64
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E}.Release|x64.ActiveCfg = Release|x64
|
||||
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|Win32.ActiveCfg = Release|x64
|
||||
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.ActiveCfg = Release|x64
|
||||
{D3EC0AFF-76FC-4210-A825-9A17410660A3}.All|x64.Build.0 = Release|x64
|
||||
|
@ -826,17 +815,6 @@ Global
|
|||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
|
||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64
|
||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Debug|x64.Build.0 = Debug|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64
|
||||
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64
|
||||
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64
|
||||
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64
|
||||
|
@ -1841,28 +1819,6 @@ Global
|
|||
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|Win32.Build.0 = Release|Win32
|
||||
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.ActiveCfg = Release|x64
|
||||
{2469B306-B027-4FF2-8815-C9C1EA2CAE79}.Release|x64.Build.0 = Release|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|Win32.ActiveCfg = Release|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.ActiveCfg = Release|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.All|x64.Build.0 = Release|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Debug|x64.Build.0 = Debug|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|Win32.Build.0 = Release|Win32
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.ActiveCfg = Release|x64
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53}.Release|x64.Build.0 = Release|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|Win32.ActiveCfg = Release|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.ActiveCfg = Release|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.All|x64.Build.0 = Release|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Debug|x64.Build.0 = Debug|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|Win32.Build.0 = Release|Win32
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.ActiveCfg = Release|x64
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90}.Release|x64.Build.0 = Release|x64
|
||||
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|Win32.ActiveCfg = Release|x64
|
||||
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.ActiveCfg = Release|x64
|
||||
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6}.All|x64.Build.0 = Release|x64
|
||||
|
@ -1963,17 +1919,6 @@ Global
|
|||
{2386B892-35F5-46CF-A0F0-10394D2FBF9B}.Release|Win32.Build.0 = All|Win32
|
||||
{2386B892-35F5-46CF-A0F0-10394D2FBF9B}.Release|x64.ActiveCfg = All|Win32
|
||||
{2386B892-35F5-46CF-A0F0-10394D2FBF9B}.Release|x64.Build.0 = All|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.All|Win32.ActiveCfg = Release|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.All|Win32.Build.0 = Release|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.All|x64.ActiveCfg = Release|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Debug|x64.Build.0 = Debug|x64
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|Win32.Build.0 = Release|Win32
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|x64.ActiveCfg = Release|x64
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9}.Release|x64.Build.0 = Release|x64
|
||||
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.All|Win32.ActiveCfg = All|Win32
|
||||
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.All|Win32.Build.0 = All|Win32
|
||||
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981}.All|x64.ActiveCfg = All|Win32
|
||||
|
@ -2516,6 +2461,42 @@ Global
|
|||
{69A7464A-9B0D-4804-A108-835229DACF58}.Release|Win32.Build.0 = Release|Win32
|
||||
{69A7464A-9B0D-4804-A108-835229DACF58}.Release|x64.ActiveCfg = Release|x64
|
||||
{69A7464A-9B0D-4804-A108-835229DACF58}.Release|x64.Build.0 = Release|x64
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|Win32.ActiveCfg = Debug|Win32
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|Win32.Build.0 = Debug|Win32
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|x64.ActiveCfg = Debug|x64
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.All|x64.Build.0 = Debug|x64
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Debug|x64.Build.0 = Debug|x64
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|Win32.Build.0 = Release|Win32
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|x64.ActiveCfg = Release|x64
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|x64.Build.0 = Release|x64
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|Win32.ActiveCfg = Debug|Win32
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|Win32.Build.0 = Debug|Win32
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|x64.ActiveCfg = Debug|x64
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.All|x64.Build.0 = Debug|x64
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Debug|x64.Build.0 = Debug|x64
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|Win32.Build.0 = Release|Win32
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|x64.ActiveCfg = Release|x64
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67}.Release|x64.Build.0 = Release|x64
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|Win32.ActiveCfg = Debug|Win32
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|Win32.Build.0 = Debug|Win32
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|x64.ActiveCfg = Debug|x64
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.All|x64.Build.0 = Debug|x64
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Debug|x64.Build.0 = Debug|x64
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|Win32.Build.0 = Release|Win32
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|x64.ActiveCfg = Release|x64
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -2549,7 +2530,6 @@ Global
|
|||
{89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{9B9D2551-D6BD-4F20-8BE5-DE30E154A064} = {0C808854-54D1-4230-BFF5-77B5FD905000}
|
||||
{8B754330-A434-4791-97E5-1EE67060BAC0} = {0C808854-54D1-4230-BFF5-77B5FD905000}
|
||||
{692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0}
|
||||
{D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
|
||||
{30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A}
|
||||
|
@ -2561,7 +2541,6 @@ Global
|
|||
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
|
||||
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
|
||||
|
@ -2655,8 +2634,6 @@ Global
|
|||
{60C542EE-6882-4EA2-8C21-5AB6DB1BA73F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{2469B306-B027-4FF2-8815-C9C1EA2CAE79} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{9DE35039-A8F6-4FBF-B1B6-EB527F802411} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{26C82FCE-E0CF-4D10-A00C-D8E582FFEB53} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{74B120FF-6935-4DFE-A142-CDB6BEA99C90} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
|
||||
{886B5E9D-F2C2-4AF2-98C8-EF98C4C770E6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{019DBD2A-273D-4BA4-BF86-B5EFE2ED76B1} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{D2396DD7-7D38-473A-ABB7-6F96D65AE1B9} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
|
||||
|
@ -2665,7 +2642,6 @@ Global
|
|||
{CEE544A9-0303-44C2-8ECE-EFA7D7BCBBBA} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
|
||||
{B535402E-38D2-4D54-8360-423ACBD17192} = {9DE35039-A8F6-4FBF-B1B6-EB527F802411}
|
||||
{2386B892-35F5-46CF-A0F0-10394D2FBF9B} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{77BC1DD2-C9A1-44D7-BFFA-1320370CACB9} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{85F0CF8C-C7AB-48F6-BA19-CC94CF87F981} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{ED2CA8B5-8E91-4296-A120-02BB0B674652} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||
{FD60942F-72D6-4CA1-8B57-EA1D1B95A89E} = {ED2CA8B5-8E91-4296-A120-02BB0B674652}
|
||||
|
@ -2714,6 +2690,9 @@ Global
|
|||
{0B612F84-7533-4DEC-AEDD-5C9CBCF15EAC} = {31C2761D-20E0-4BF8-98B9-E32F0D8DD6E1}
|
||||
{580675D7-C1C9-4197-AAC5-00F64FAFDE78} = {9388C266-C3FC-468A-92EF-0CBC35941412}
|
||||
{69A7464A-9B0D-4804-A108-835229DACF58} = {9388C266-C3FC-468A-92EF-0CBC35941412}
|
||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB} = {9388C266-C3FC-468A-92EF-0CBC35941412}
|
||||
{3745B86B-6BE8-3E67-FCB9-BE62A6131D67} = {9388C266-C3FC-468A-92EF-0CBC35941412}
|
||||
{E9FF8127-D5F0-2398-59EB-702CE55F7800} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {09840DE7-9208-45AA-9667-1A71EE93BD1E}
|
||||
|
|
27
LICENSE
27
LICENSE
|
@ -1202,10 +1202,6 @@ Files: src/include/switch_cpp.h
|
|||
Copyright: 2007 Yossi Neiman <freeswitch@cartissolutions.com>
|
||||
License: MPL-1.1 (well, maybe -- it refers to a COPYING file, so probably docs/COPYING, in which case MPL-1.1)
|
||||
|
||||
Files: libs/iksemel/*
|
||||
Copyright: 2000-2007 Gurer Ozen <madcat@e-kolay.net>
|
||||
License: LGPL-2.1
|
||||
|
||||
Files: libs/apr*/*
|
||||
Copyright: 2000-2005 The Apache Software Foundation or its licensors
|
||||
1991-1992, RSA Data Security, Inc.
|
||||
|
@ -1517,22 +1513,6 @@ Files: src/mod/languages/mod_managed/*
|
|||
Copyright: 2008, Michael Giagnocavo <mgg@giagnocavo.net>
|
||||
License: MPL-1.1
|
||||
|
||||
Files: src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/*
|
||||
src/mod/languages/mod_lua/lua-mode.el
|
||||
libs/iksemel/ltmain.sh
|
||||
Copyright: 1995-2007 Free Software Foundation, Inc.
|
||||
License: GPL-2+
|
||||
|
||||
Files: src/mod/endpoints/mod_gsmopen/libctb-0.16/*
|
||||
Copyright: 2001-2010 Joachim Buermann
|
||||
License: wxWindows
|
||||
|
||||
Files: src/mod/endpoints/mod_gsmopen/libctb-0.16/src/win32/getopt.cpp
|
||||
Copyright: 2001 ?
|
||||
License: clueless and unacceptable
|
||||
FIXME -- this cannot go in Debian -- the license is stated as:
|
||||
(I think Open Source)
|
||||
|
||||
Files: src/mod/endpoints/mod_rtmp/libamf/src/types.[ch]
|
||||
Copyright: 2007, 2008 Marc Noirot <marc.noirot AT gmail.com>
|
||||
License: GPL-2+
|
||||
|
@ -1544,10 +1524,6 @@ Files: src/mod/endpoints/mod_rtmp/rtmp.c
|
|||
Copyright: 2011-2012, Barracuda Networks Inc.
|
||||
License: MPL-1.1
|
||||
|
||||
Files: src/mod/endpoints/mod_gsmopen/asterisk/celliax_spandsp.[ch]
|
||||
Copyright: 2001-2006 Steve Underwood
|
||||
License: GPL-2
|
||||
|
||||
Files: src/mod/endpoints/mod_skinny/*
|
||||
src/mod/asr_tts/mod_tts_commandline/mod_tts_commandline.c
|
||||
Copyright: 2009-2010, Mathieu Parent <math.parent@gmail.com>
|
||||
|
@ -1606,8 +1582,7 @@ Files: libs/libcodec2/src/pack.c
|
|||
Copyright: 2010 Perens LLC <bruce@perens.com>
|
||||
License: GPL-3+
|
||||
|
||||
Files: src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c
|
||||
src/include/switch_profile.h
|
||||
Files: src/include/switch_profile.h
|
||||
src/switch_profile.c
|
||||
Copyright: 2009,2010, Sangoma Technologies
|
||||
License: BSD-3-clause
|
||||
|
|
10
Makefile.am
10
Makefile.am
|
@ -668,9 +668,6 @@ nodepends: .nodepends
|
|||
yesdepends:
|
||||
rm .nodepends
|
||||
|
||||
iksemel-dep:
|
||||
make -C src/mod/formats/mod_ssml deps
|
||||
|
||||
core: $(switch_builddir)/modules.conf src/include/switch_version.h $(CORE_LIBS)
|
||||
$(MAKE) $(AM_MAKEFLAGS) libfreeswitch.la
|
||||
|
||||
|
@ -744,13 +741,6 @@ srtp-reconf:
|
|||
cd libs/srtp && sh ./config.status --recheck
|
||||
cd libs/srtp && sh ./config.status
|
||||
|
||||
|
||||
iks-reconf:
|
||||
cd libs/iksemel && $(MAKE) clean
|
||||
cd libs/iksemel && autoreconf -fi
|
||||
cd libs/iksemel && sh ./configure.gnu $(MY_DEFAULT_ARGS)
|
||||
$(MAKE) mod_ssml-clean
|
||||
|
||||
cluecon:
|
||||
@clear
|
||||
@echo Thank you for updating. This is going to take a while so relax.
|
||||
|
|
|
@ -33,7 +33,8 @@ The main index for documentation is available at:
|
|||
|
||||
Step by step tutorials to install FreeSWITCH from packages:
|
||||
|
||||
* [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian) [<b>Recommended</b>]
|
||||
* [Using FSGET](/scripts/packaging) [<b>Recommended</b>]
|
||||
* [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian)
|
||||
* [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi)
|
||||
* [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7)
|
||||
|
||||
|
|
|
@ -13,4 +13,3 @@ m4_include([build/config/sac-pkg-config.m4])
|
|||
m4_include([build/config/sac-openssl.m4])
|
||||
m4_include([build/config/sched_setaffinity.m4])
|
||||
m4_include([libs/apr/build/apr_common.m4])
|
||||
m4_include([libs/iksemel/build/libgnutls.m4])
|
||||
|
|
|
@ -10,7 +10,7 @@ BGJOB=false
|
|||
VERBOSE=false
|
||||
BASEDIR=`pwd`;
|
||||
LIBDIR=${BASEDIR}/libs;
|
||||
SUBDIRS="apr iksemel srtp fs";
|
||||
SUBDIRS="apr srtp fs";
|
||||
|
||||
while getopts 'jhd:v' o; do
|
||||
case "$o" in
|
||||
|
|
|
@ -17,5 +17,4 @@ extraclean-modules: extraclean
|
|||
|
||||
print_tests:
|
||||
@set +e; \
|
||||
test -z "$(TESTS)" || for i in $(TESTS); do echo $(subdir)/$$i; done;
|
||||
|
||||
test -z "$(TESTS)" || for i in $(TESTS); do echo $(subdir)/$$i; done; echo;
|
||||
|
|
|
@ -26,7 +26,6 @@ applications/mod_hash
|
|||
#applications/mod_hiredis
|
||||
applications/mod_httapi
|
||||
#applications/mod_http_cache
|
||||
#applications/mod_ladspa
|
||||
#applications/mod_lcr
|
||||
#applications/mod_memcache
|
||||
#applications/mod_mongo
|
||||
|
@ -41,7 +40,6 @@ applications/mod_httapi
|
|||
#applications/mod_rss
|
||||
applications/mod_signalwire
|
||||
applications/mod_sms
|
||||
#applications/mod_sms_flowroute
|
||||
#applications/mod_snapshot
|
||||
#applications/mod_snom
|
||||
#applications/mod_sonar
|
||||
|
@ -56,7 +54,6 @@ applications/mod_valet_parking
|
|||
#applications/mod_vmd
|
||||
applications/mod_voicemail
|
||||
#applications/mod_voicemail_ivr
|
||||
#asr_tts/mod_cepstral
|
||||
#asr_tts/mod_flite
|
||||
#asr_tts/mod_pocketsphinx
|
||||
#asr_tts/mod_tts_commandline
|
||||
|
@ -75,7 +72,6 @@ codecs/mod_h26x
|
|||
#codecs/mod_isac
|
||||
#codecs/mod_mp4v
|
||||
codecs/mod_opus
|
||||
#codecs/mod_sangoma_codec
|
||||
#codecs/mod_silk
|
||||
#codecs/mod_siren
|
||||
#codecs/mod_theora
|
||||
|
@ -86,7 +82,6 @@ dialplans/mod_dialplan_asterisk
|
|||
dialplans/mod_dialplan_xml
|
||||
#directories/mod_ldap
|
||||
#endpoints/mod_alsa
|
||||
#endpoints/mod_gsmopen
|
||||
#endpoints/mod_h323
|
||||
#endpoints/mod_khomp
|
||||
endpoints/mod_loopback
|
||||
|
@ -110,8 +105,6 @@ event_handlers/mod_event_socket
|
|||
#event_handlers/mod_json_cdr
|
||||
#event_handlers/mod_radius_cdr
|
||||
#event_handlers/mod_odbc_cdr
|
||||
#event_handlers/mod_kazoo
|
||||
#event_handlers/mod_rayo
|
||||
#event_handlers/mod_smpp
|
||||
#event_handlers/mod_snmp
|
||||
#event_handlers/mod_event_zmq
|
||||
|
@ -123,7 +116,6 @@ formats/mod_png
|
|||
#formats/mod_shell_stream
|
||||
#formats/mod_shout
|
||||
formats/mod_sndfile
|
||||
#formats/mod_ssml
|
||||
formats/mod_tone_stream
|
||||
#formats/mod_vlc
|
||||
#formats/mod_opusfile
|
||||
|
|
|
@ -26,7 +26,6 @@ applications/mod_hash
|
|||
applications/mod_hiredis
|
||||
applications/mod_httapi
|
||||
applications/mod_http_cache
|
||||
#applications/mod_ladspa
|
||||
applications/mod_lcr
|
||||
applications/mod_memcache
|
||||
applications/mod_mongo
|
||||
|
@ -54,7 +53,6 @@ applications/mod_video_filter
|
|||
applications/mod_vmd
|
||||
applications/mod_voicemail
|
||||
applications/mod_voicemail_ivr
|
||||
#asr_tts/mod_cepstral
|
||||
asr_tts/mod_flite
|
||||
asr_tts/mod_pocketsphinx
|
||||
asr_tts/mod_tts_commandline
|
||||
|
@ -72,7 +70,6 @@ codecs/mod_ilbc
|
|||
codecs/mod_isac
|
||||
codecs/mod_mp4v
|
||||
codecs/mod_opus
|
||||
codecs/mod_sangoma_codec
|
||||
codecs/mod_silk
|
||||
codecs/mod_siren
|
||||
codecs/mod_theora
|
||||
|
@ -83,7 +80,6 @@ dialplans/mod_dialplan_directory
|
|||
dialplans/mod_dialplan_xml
|
||||
directories/mod_ldap
|
||||
#endpoints/mod_alsa
|
||||
#endpoints/mod_gsmopen
|
||||
#endpoints/mod_h323
|
||||
#endpoints/mod_khomp
|
||||
endpoints/mod_loopback
|
||||
|
@ -104,10 +100,8 @@ event_handlers/mod_event_multicast
|
|||
event_handlers/mod_event_socket
|
||||
event_handlers/mod_format_cdr
|
||||
event_handlers/mod_json_cdr
|
||||
event_handlers/mod_kazoo
|
||||
#event_handlers/mod_radius_cdr
|
||||
event_handlers/mod_odbc_cdr
|
||||
event_handlers/mod_rayo
|
||||
event_handlers/mod_snmp
|
||||
#event_handlers/mod_event_zmq
|
||||
formats/mod_imagick
|
||||
|
@ -118,7 +112,6 @@ formats/mod_portaudio_stream
|
|||
formats/mod_shell_stream
|
||||
formats/mod_shout
|
||||
formats/mod_sndfile
|
||||
formats/mod_ssml
|
||||
formats/mod_tone_stream
|
||||
formats/mod_vlc
|
||||
languages/mod_basic
|
||||
|
|
|
@ -1 +1 @@
|
|||
1.10.11-dev
|
||||
1.10.13-dev
|
||||
|
|
|
@ -0,0 +1,257 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
### shfmt -w -s -ci -sr -kp -fn ci.sh
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# CI Script
|
||||
# Helper script for running CI jobs
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Function to display usage information
|
||||
display_usage()
|
||||
{
|
||||
echo "Usage: $0 -t <type> -a <action> -c <code> -p <path>"
|
||||
echo "Options:"
|
||||
echo " -t Type (unit-test, scan-build)"
|
||||
echo " -a Action (configure, build, install, validate)"
|
||||
echo " -c Code (sofia-sip, freeswitch)"
|
||||
echo " -p Path to code"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Parse command line arguments
|
||||
while getopts "t:p:a:c:h" opt; do
|
||||
case $opt in
|
||||
t) TYPE="$OPTARG" ;;
|
||||
a) ACTION="$OPTARG" ;;
|
||||
c) CODE="$OPTARG" ;;
|
||||
p) PATH_TO_CODE="$OPTARG" ;;
|
||||
h) display_usage ;;
|
||||
?) display_usage ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Function to handle sofia-sip configuration
|
||||
configure_sofia_sip()
|
||||
{
|
||||
./autogen.sh && ./configure.gnu || exit 1
|
||||
}
|
||||
|
||||
# Function to handle sofia-sip build
|
||||
build_sofia_sip()
|
||||
{
|
||||
make -j$(nproc) || exit 1
|
||||
}
|
||||
|
||||
# Function to handle sofia-sip installation
|
||||
install_sofia_sip()
|
||||
{
|
||||
make install || exit 1
|
||||
}
|
||||
|
||||
# Function to handle sofia-sip validation
|
||||
validate_sofia_sip()
|
||||
{
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Function to handle freeswitch configuration
|
||||
configure_freeswitch()
|
||||
{
|
||||
local type="$1"
|
||||
|
||||
./bootstrap.sh -j || exit 1
|
||||
|
||||
case "$type" in
|
||||
"unit-test")
|
||||
echo 'codecs/mod_openh264' >> modules.conf
|
||||
sed -i \
|
||||
-e '/applications\/mod_http_cache/s/^#//g' \
|
||||
-e '/formats\/mod_opusfile/s/^#//g' \
|
||||
-e '/languages\/mod_lua/s/^#//g' \
|
||||
modules.conf
|
||||
|
||||
export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0
|
||||
|
||||
./configure \
|
||||
--enable-address-sanitizer \
|
||||
--enable-fake-dlclose ||
|
||||
exit 1
|
||||
|
||||
;;
|
||||
"scan-build")
|
||||
cp build/modules.conf.most modules.conf
|
||||
|
||||
# "Enable"/"Uncomment" mods
|
||||
echo 'codecs/mod_openh264' >> modules.conf
|
||||
sed -i \
|
||||
-e '/mod_mariadb/s/^#//g' \
|
||||
-e '/mod_v8/s/^#//g' \
|
||||
modules.conf
|
||||
|
||||
# "Disable"/"Comment out" mods
|
||||
sed -i \
|
||||
-e '/mod_ilbc/s/^/#/g' \
|
||||
-e '/mod_isac/s/^/#/g' \
|
||||
-e '/mod_mp4/s/^/#/g' \
|
||||
-e '/mod_mongo/s/^/#/g' \
|
||||
-e '/mod_pocketsphinx/s/^/#/g' \
|
||||
-e '/mod_siren/s/^/#/g' \
|
||||
-e '/mod_avmd/s/^/#/g' \
|
||||
-e '/mod_basic/s/^/#/g' \
|
||||
-e '/mod_cdr_mongodb/s/^/#/g' \
|
||||
-e '/mod_cv/s/^/#/g' \
|
||||
-e '/mod_erlang_event/s/^/#/g' \
|
||||
-e '/mod_perl/s/^/#/g' \
|
||||
-e '/mod_rtmp/s/^/#/g' \
|
||||
-e '/mod_unimrcp/s/^/#/g' \
|
||||
-e '/mod_xml_rpc/s/^/#/g' \
|
||||
modules.conf
|
||||
|
||||
./configure || exit 1
|
||||
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to handle freeswitch build
|
||||
build_freeswitch()
|
||||
{
|
||||
local type="$1"
|
||||
|
||||
set -o pipefail
|
||||
|
||||
case "$type" in
|
||||
"unit-test")
|
||||
make --no-keep-going -j$(nproc --all) |& tee ./unit-tests-build-result.txt
|
||||
build_status=${PIPESTATUS[0]}
|
||||
if [[ $build_status != "0" ]]; then
|
||||
exit $build_status
|
||||
fi
|
||||
|
||||
;;
|
||||
"scan-build")
|
||||
if ! command -v scan-build-14 > /dev/null 2>&1; then
|
||||
echo "Error: scan-build-14 command not found. Please ensure clang static analyzer is installed." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p scan-build
|
||||
|
||||
scan-build-14 \
|
||||
--force-analyze-debug-code \
|
||||
--status-bugs \
|
||||
-o ./scan-build/ \
|
||||
make --no-keep-going -j$(nproc --all) |& tee ./scan-build-result.txt
|
||||
build_status=${PIPESTATUS[0]}
|
||||
|
||||
if ! grep -siq "scan-build: No bugs found" ./scan-build-result.txt; then
|
||||
echo "scan-build: bugs found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $build_status != "0" ]]; then
|
||||
echo "scan-build: compilation failed!"
|
||||
exit $build_status
|
||||
fi
|
||||
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to handle freeswitch installation
|
||||
install_freeswitch()
|
||||
{
|
||||
make install || exit 1
|
||||
}
|
||||
|
||||
# Function to handle freeswitch validation
|
||||
validate_freeswitch()
|
||||
{
|
||||
local type="$1"
|
||||
|
||||
case "$type" in
|
||||
"unit-test")
|
||||
exit 0
|
||||
;;
|
||||
"scan-build")
|
||||
REPORT_PATH=$(find scan-build* -mindepth 1 -type d)
|
||||
if [ -n "$REPORT_PATH" ]; then
|
||||
echo "Found analysis report at: $REPORT_PATH"
|
||||
|
||||
if command -v html2text > /dev/null 2>&1; then
|
||||
echo "Report contents:"
|
||||
html2text "$REPORT_PATH"/*.html || true
|
||||
fi
|
||||
|
||||
echo "Number of issues found:"
|
||||
grep -c "<!--BUGDESC" "$REPORT_PATH"/*.html || true
|
||||
|
||||
exit $([ -d "$REPORT_PATH" ])
|
||||
else
|
||||
echo "No analysis report found"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Change to the code directory
|
||||
if [ -n "$PATH_TO_CODE" ]; then
|
||||
cd "$PATH_TO_CODE" || exit 1
|
||||
fi
|
||||
|
||||
# Execute appropriate flow based on code, type, and action
|
||||
case "$CODE" in
|
||||
"sofia-sip")
|
||||
case "$ACTION" in
|
||||
"configure")
|
||||
configure_sofia_sip "$TYPE"
|
||||
;;
|
||||
"build")
|
||||
build_sofia_sip "$TYPE"
|
||||
;;
|
||||
"install")
|
||||
install_sofia_sip "$TYPE"
|
||||
;;
|
||||
"validate")
|
||||
validate_sofia_sip "$TYPE"
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"freeswitch")
|
||||
case "$ACTION" in
|
||||
"configure")
|
||||
configure_freeswitch "$TYPE"
|
||||
;;
|
||||
"build")
|
||||
build_freeswitch "$TYPE"
|
||||
;;
|
||||
"install")
|
||||
install_freeswitch "$TYPE"
|
||||
;;
|
||||
"validate")
|
||||
validate_freeswitch "$TYPE"
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
|
@ -88,7 +88,6 @@
|
|||
<!-- ASR /TTS -->
|
||||
<!-- <load module="mod_flite"/> -->
|
||||
<!-- <load module="mod_pocketsphinx"/> -->
|
||||
<!-- <load module="mod_cepstral"/> -->
|
||||
<!-- <load module="mod_openmrcp"/> -->
|
||||
<!-- <load module="mod_rss"/> -->
|
||||
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
<configuration name="acl.conf" description="Network Lists">
|
||||
<network-lists>
|
||||
<!--
|
||||
These ACL's are automatically created on startup.
|
||||
|
||||
rfc1918.auto - RFC1918 Space
|
||||
nat.auto - RFC1918 Excluding your local lan.
|
||||
localnet.auto - ACL for your local lan.
|
||||
loopback.auto - ACL for your local lan.
|
||||
-->
|
||||
|
||||
<list name="lan" default="allow">
|
||||
<node type="deny" cidr="192.168.42.0/24"/>
|
||||
<node type="allow" cidr="192.168.42.42/32"/>
|
||||
</list>
|
||||
|
||||
<!--
|
||||
This will traverse the directory adding all users
|
||||
with the cidr= tag to this ACL, when this ACL matches
|
||||
the users variables and params apply as if they
|
||||
digest authenticated.
|
||||
-->
|
||||
<list name="domains" default="deny">
|
||||
<!-- domain= is special it scans the domain from the directory to build the ACL -->
|
||||
<node type="allow" domain="$${domain}"/>
|
||||
<!-- use cidr= if you wish to allow ip ranges to this domains acl. -->
|
||||
<!-- <node type="allow" cidr="192.168.0.0/24"/> -->
|
||||
</list>
|
||||
|
||||
<list name="rayo-clients" default="deny">
|
||||
<node type="allow" cidr="192.168.0.39/32"/>
|
||||
<node type="allow" cidr="192.168.0.59/32"/>
|
||||
</list>
|
||||
|
||||
<list name="rayo-servers" default="deny">
|
||||
<node type="allow" cidr="192.168.0.39/32"/>
|
||||
</list>
|
||||
|
||||
</network-lists>
|
||||
</configuration>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<configuration name="cdr_csv.conf" description="CDR CSV Format">
|
||||
<settings>
|
||||
<!-- 'cdr-csv' will always be appended to log-base -->
|
||||
<!--<param name="log-base" value="/var/log"/>-->
|
||||
<param name="default-template" value="example"/>
|
||||
<!-- This is like the info app but after the call is hung up -->
|
||||
<!--<param name="debug" value="true"/>-->
|
||||
<param name="rotate-on-hup" value="true"/>
|
||||
<!-- may be a b or ab -->
|
||||
<param name="legs" value="a"/>
|
||||
<!-- Only log in Master.csv -->
|
||||
<!-- <param name="master-file-only" value="true"/> -->
|
||||
</settings>
|
||||
<templates>
|
||||
<template name="sql">INSERT INTO cdr VALUES ("${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}");</template>
|
||||
<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}"</template>
|
||||
<template name="snom">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${call_clientcode}","${sip_rtp_rxstat}","${sip_rtp_txstat}","${sofia_record_file}"</template>
|
||||
<template name="linksys">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${sip_p_rtp_stat}"</template>
|
||||
<template name="asterisk">"${accountcode}","${caller_id_number}","${destination_number}","${context}","${caller_id}","${channel_name}","${bridge_channel}","${last_app}","${last_arg}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${amaflags}","${uuid}","${userfield}"</template>
|
||||
<template name="opencdrrate">"${uuid}","${signal_bond}","${direction}","${ani}","${destination_number}","${answer_stamp}","${end_stamp}","${billsec}","${accountcode}","${userfield}","${network_addr}","${regex('${original_caller_id_name}'|^.)}","${sip_gateway_name}"</template>
|
||||
</templates>
|
||||
</configuration>
|
||||
|
|
@ -1,214 +0,0 @@
|
|||
<!-- http://wiki.freeswitch.org/wiki/Mod_conference -->
|
||||
<!-- None of these paths are real if you want any of these options you need to really set them up -->
|
||||
<configuration name="conference.conf" description="Audio Conference">
|
||||
<!-- Advertise certain presence on startup . -->
|
||||
<advertise>
|
||||
<room name="3001@$${domain}" status="FreeSWITCH"/>
|
||||
</advertise>
|
||||
|
||||
<!-- These are the default keys that map when you do not specify a caller control group -->
|
||||
<!-- Note: none and default are reserved names for group names. Disabled if dist-dtmf member flag is set. -->
|
||||
<caller-controls>
|
||||
<group name="default">
|
||||
<control action="mute" digits="0"/>
|
||||
<control action="deaf mute" digits="*"/>
|
||||
<control action="energy up" digits="9"/>
|
||||
<control action="energy equ" digits="8"/>
|
||||
<control action="energy dn" digits="7"/>
|
||||
<control action="vol talk up" digits="3"/>
|
||||
<control action="vol talk zero" digits="2"/>
|
||||
<control action="vol talk dn" digits="1"/>
|
||||
<control action="vol listen up" digits="6"/>
|
||||
<control action="vol listen zero" digits="5"/>
|
||||
<control action="vol listen dn" digits="4"/>
|
||||
<control action="hangup" digits="#"/>
|
||||
</group>
|
||||
</caller-controls>
|
||||
|
||||
<!-- Profiles are collections of settings you can reference by name. -->
|
||||
<profiles>
|
||||
<!--If no profile is specified it will default to "default"-->
|
||||
<profile name="default">
|
||||
<!-- Directory to drop CDR's
|
||||
'auto' means $PREFIX/logs/conference_cdr/<confernece_uuid>.cdr.xml
|
||||
a non-absolute path means $PREFIX/logs/<value>/<confernece_uuid>.cdr.xml
|
||||
absolute path means <value>/<confernece_uuid>.cdr.xml
|
||||
-->
|
||||
<!-- <param name="cdr-log-dir" value="auto"/> -->
|
||||
|
||||
<!-- Domain (for presence) -->
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<!-- Sample Rate-->
|
||||
<param name="rate" value="8000"/>
|
||||
<!-- Number of milliseconds per frame -->
|
||||
<param name="interval" value="20"/>
|
||||
<!-- Energy level required for audio to be sent to the other users -->
|
||||
<param name="energy-level" value="300"/>
|
||||
|
||||
<!--Can be | delim of waste|mute|deaf|dist-dtmf waste will always transmit data to each channel
|
||||
even during silence. dist-dtmf propagates dtmfs to all other members, but channel controls
|
||||
via dtmf will be disabled. -->
|
||||
<!--<param name="member-flags" value="waste"/>-->
|
||||
|
||||
<!-- Name of the caller control group to use for this profile -->
|
||||
<!-- <param name="caller-controls" value="some name"/> -->
|
||||
<!-- Name of the caller control group to use for the moderator in this profile -->
|
||||
<!-- <param name="moderator-controls" value="some name"/> -->
|
||||
<!-- TTS Engine to use -->
|
||||
<!--<param name="tts-engine" value="cepstral"/>-->
|
||||
<!-- TTS Voice to use -->
|
||||
<!--<param name="tts-voice" value="david"/>-->
|
||||
|
||||
<!-- If TTS is enabled all audio-file params beginning with -->
|
||||
<!-- 'say:' will be considered text to say with TTS -->
|
||||
<!-- Override the default path here, after which you use relative paths in the other sound params -->
|
||||
<!-- Note: The default path is the conference's first caller's sound_prefix -->
|
||||
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
|
||||
<!-- File to play to acknowledge success -->
|
||||
<!--<param name="ack-sound" value="beep.wav"/>-->
|
||||
<!-- File to play to acknowledge failure -->
|
||||
<!--<param name="nack-sound" value="beeperr.wav"/>-->
|
||||
<!-- File to play to acknowledge muted -->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<!-- File to play to acknowledge unmuted -->
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<!-- File to play if you are alone in the conference -->
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<!-- File to play endlessly (nobody will ever be able to talk) -->
|
||||
<!--<param name="perpetual-sound" value="perpetual.wav"/>-->
|
||||
<!-- File to play when you're alone (music on hold)-->
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<!-- File to play when you join the conference -->
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<!-- File to play when you leave the conference -->
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<!-- File to play when you ae ejected from the conference -->
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<!-- File to play when the conference is locked -->
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<!-- File to play when the conference is locked during the call-->
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<!-- File to play when the conference is unlocked during the call-->
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<!-- File to play to prompt for a pin -->
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<!-- File to play to when the pin is invalid -->
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<!-- Conference pin -->
|
||||
<!--<param name="pin" value="12345"/>-->
|
||||
<!--<param name="moderator-pin" value="54321"/>-->
|
||||
<!-- Max number of times the user can be prompted for PIN -->
|
||||
<!--<param name="pin-retries" value="3"/>-->
|
||||
<!-- Default Caller ID Name for outbound calls -->
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<!-- Default Caller ID Number for outbound calls -->
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<!-- Suppress start and stop talking events -->
|
||||
<!-- <param name="suppress-events" value="start-talking,stop-talking"/> -->
|
||||
<!-- enable comfort noise generation -->
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<!-- Uncomment auto-record to toggle recording every conference call. -->
|
||||
<!-- Another valid value is shout://user:pass@server.com/live.mp3 -->
|
||||
<!--
|
||||
<param name="auto-record" value="$${recordings_dir}/${conference_name}_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
|
||||
-->
|
||||
|
||||
<!-- IVR digit machine timeouts -->
|
||||
<!-- How much to wait between DTMF digits to match caller-controls -->
|
||||
<!-- <param name="ivr-dtmf-timeout" value="500"/> -->
|
||||
<!-- How much to wait for the first DTMF, 0 forever -->
|
||||
<!-- <param name="ivr-input-timeout" value="0" /> -->
|
||||
<!-- Delay before a conference is asked to be terminated -->
|
||||
<!-- <param name="endconf-grace-time" value="120" /> -->
|
||||
<!-- Can be | delim of wait-mod|audio-always|video-bridge|video-floor-only
|
||||
wait_mod will wait until the moderator in,
|
||||
audio-always will always mix audio from all members regardless they are talking or not -->
|
||||
<!-- <param name="conference-flags" value="audio-always"/> -->
|
||||
</profile>
|
||||
|
||||
<profile name="wideband">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="16000"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="energy-level" value="300"/>
|
||||
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<!--<param name="tts-engine" value="flite"/>-->
|
||||
<!--<param name="tts-voice" value="kal16"/>-->
|
||||
</profile>
|
||||
|
||||
<profile name="ultrawideband">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="32000"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="energy-level" value="300"/>
|
||||
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<!--<param name="tts-engine" value="flite"/>-->
|
||||
<!--<param name="tts-voice" value="kal16"/>-->
|
||||
</profile>
|
||||
|
||||
<profile name="cdquality">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="48000"/>
|
||||
<param name="interval" value="10"/>
|
||||
<param name="energy-level" value="300"/>
|
||||
<!--<param name="sound-prefix" value="$${sound_prefix}"/>-->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
</profile>
|
||||
|
||||
<profile name="sla">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="16000"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="caller-controls" value="none"/>
|
||||
<param name="energy-level" value="200"/>
|
||||
<param name="moh-sound" value="silence"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<param name="min-required-recording-participants" value="1"/>
|
||||
</profile>
|
||||
|
||||
</profiles>
|
||||
</configuration>
|
|
@ -1,56 +0,0 @@
|
|||
<configuration name="console.conf" description="Console Logger">
|
||||
<!-- pick a file name, a function name or 'all' -->
|
||||
<!-- map as many as you need for specific debugging -->
|
||||
<mappings>
|
||||
<!--
|
||||
name can be a file name, function name or 'all'
|
||||
value is one or more of debug,info,notice,warning,err,crit,alert,all
|
||||
See examples below
|
||||
|
||||
|
||||
The following map is the default, which is all debug levels enabled:
|
||||
<map name="all" value="debug,info,notice,warning,err,crit,alert"/>
|
||||
|
||||
|
||||
Example: the following turns on debugging for error and critical levels only
|
||||
<map name="all" value="err,crit"/>
|
||||
|
||||
NOTE: using map name="all" will override any other settings! If you
|
||||
want a more specific set of console messages then you will need
|
||||
to specify which files and/or functions you want to have debug
|
||||
messages. One option is to turn on just the more critical
|
||||
messages with map name="all", then specify the other types of
|
||||
console messages you want to see for various files and functions.
|
||||
|
||||
Example: turn on ERROR, CRIT, ALERT for all modules, then specify other
|
||||
levels for various modules and functions
|
||||
|
||||
<map name="all" value="err,crit,alert"/>
|
||||
<map name="switch_loadable_module_process" value="all"/>
|
||||
<map name="mod_local_stream.c" value="warning,debug"/>
|
||||
<map name="mod_sndfile.c" value="warning,info,debug"/>
|
||||
-->
|
||||
<map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
|
||||
|
||||
<!--
|
||||
You can use or modify this sample set of mappings. It turns on higher
|
||||
level messages for all modules and then specifies extra lower level
|
||||
messages for Freetdm, Sofia, and switch core messages.
|
||||
|
||||
<map name="all" value="warning,err,crit,alert"/>
|
||||
<map name="zap_analog.c" value="all"/>
|
||||
<map name="zap_io.c" value="all"/>
|
||||
<map name="zap_isdn.c" value="all"/>
|
||||
<map name="zap_zt.c" value="all"/>
|
||||
<map name="mod_freetdm" value="all"/>
|
||||
<map name="sofia.c" value="notice"/>
|
||||
<map name="switch_core_state_machine.c" value="all"/>
|
||||
|
||||
-->
|
||||
</mappings>
|
||||
<settings>
|
||||
<!-- comment or set to false for no color logging -->
|
||||
<param name="colorize" value="true"/>
|
||||
<param name="loglevel" value="$${console_loglevel}"/>
|
||||
</settings>
|
||||
</configuration>
|
|
@ -1,9 +0,0 @@
|
|||
<configuration name="event_socket.conf" description="Socket Client">
|
||||
<settings>
|
||||
<param name="nat-map" value="false"/>
|
||||
<param name="listen-ip" value="127.0.0.1"/>
|
||||
<param name="listen-port" value="8021"/>
|
||||
<param name="password" value="ClueCon"/>
|
||||
<!--<param name="apply-inbound-acl" value="lan"/>-->
|
||||
</settings>
|
||||
</configuration>
|
|
@ -1,21 +0,0 @@
|
|||
<configuration name="http_cache.conf" description="HTTP GET cache">
|
||||
<settings>
|
||||
<!-- set to true if you want to enable http:// and https:// formats. Do not use if mod_httapi is also loaded -->
|
||||
<param name="enable-file-formats" value="true"/>
|
||||
<param name="max-urls" value="10000"/>
|
||||
<param name="location" value="$${base_dir}/http_cache"/>
|
||||
<param name="default-max-age" value="86400"/>
|
||||
<param name="prefetch-thread-count" value="8"/>
|
||||
<param name="prefetch-queue-size" value="100"/>
|
||||
<!-- absolute path to CA bundle file -->
|
||||
<param name="ssl-cacert" value="$${base_dir}/conf/cacert.pem"/>
|
||||
<!-- verify certificates -->
|
||||
<param name="ssl-verifypeer" value="true"/>
|
||||
<!-- verify host name matches certificate -->
|
||||
<param name="ssl-verifyhost" value="true"/>
|
||||
<!-- default is 300 seconds, override here -->
|
||||
<!--param name="connect-timeout" value="300"/-->
|
||||
<!-- default is 300 seconds, override here -->
|
||||
<!--param name="download-timeout" value="300"/-->
|
||||
</settings>
|
||||
</configuration>
|
|
@ -1,49 +0,0 @@
|
|||
<configuration name="local_stream.conf" description="stream files from local dir">
|
||||
<!-- fallback to default if requested moh class isn't found -->
|
||||
<directory name="default" path="$${sounds_dir}/music/8000">
|
||||
<param name="rate" value="8000"/>
|
||||
<param name="shuffle" value="true"/>
|
||||
<param name="channels" value="1"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="timer-name" value="soft"/>
|
||||
<!-- list of short files to break in with every so often -->
|
||||
<!--<param name="chime-list" value="file1.wav,file2.wav"/>-->
|
||||
<!-- frequency of break-in (seconds)-->
|
||||
<!--<param name="chime-freq" value="30"/>-->
|
||||
<!-- limit to how many seconds the file will play -->
|
||||
<!--<param name="chime-max" value="500"/>-->
|
||||
</directory>
|
||||
|
||||
<directory name="moh/8000" path="$${sounds_dir}/music/8000">
|
||||
<param name="rate" value="8000"/>
|
||||
<param name="shuffle" value="true"/>
|
||||
<param name="channels" value="1"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="timer-name" value="soft"/>
|
||||
</directory>
|
||||
|
||||
<directory name="moh/16000" path="$${sounds_dir}/music/16000">
|
||||
<param name="rate" value="16000"/>
|
||||
<param name="shuffle" value="true"/>
|
||||
<param name="channels" value="1"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="timer-name" value="soft"/>
|
||||
</directory>
|
||||
|
||||
<directory name="moh/32000" path="$${sounds_dir}/music/32000">
|
||||
<param name="rate" value="32000"/>
|
||||
<param name="shuffle" value="true"/>
|
||||
<param name="channels" value="1"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="timer-name" value="soft"/>
|
||||
</directory>
|
||||
<!--
|
||||
<directory name="moh/48000" path="$${sounds_dir}/music/48000">
|
||||
<param name="rate" value="48000"/>
|
||||
<param name="shuffle" value="true"/>
|
||||
<param name="channels" value="1"/>
|
||||
<param name="interval" value="10"/>
|
||||
<param name="timer-name" value="soft"/>
|
||||
</directory>
|
||||
-->
|
||||
</configuration>
|
|
@ -1,29 +0,0 @@
|
|||
<configuration name="logfile.conf" description="File Logging">
|
||||
<settings>
|
||||
<!-- true to auto rotate on HUP, false to open/close -->
|
||||
<param name="rotate-on-hup" value="true"/>
|
||||
</settings>
|
||||
<profiles>
|
||||
<profile name="default">
|
||||
<settings>
|
||||
<!-- File to log to -->
|
||||
<!--<param name="logfile" value="/var/log/freeswitch.log"/>-->
|
||||
<!-- At this length in bytes rotate the log file (0 for never) -->
|
||||
<param name="rollover" value="10485760"/>
|
||||
<!-- Maximum number of log files to keep before wrapping -->
|
||||
<!-- If this parameter is enabled, the log filenames will not include a date stamp -->
|
||||
<!-- <param name="maximum-rotate" value="32"/> -->
|
||||
<!-- Uncomment to prefix all log lines by the session's uuid -->
|
||||
<param name="uuid" value="true" />
|
||||
</settings>
|
||||
<mappings>
|
||||
<!--
|
||||
name can be a file name, function name or 'all'
|
||||
value is one or more of debug,info,notice,warning,err,crit,alert,all
|
||||
Please see comments in console.conf.xml for more information
|
||||
-->
|
||||
<map name="all" value="debug,info,notice,warning,err,crit,alert"/>
|
||||
</mappings>
|
||||
</profile>
|
||||
</profiles>
|
||||
</configuration>
|
|
@ -1,70 +0,0 @@
|
|||
<configuration name="modules.conf" description="Modules">
|
||||
<modules>
|
||||
<!-- Loggers -->
|
||||
<load module="mod_console"/>
|
||||
<load module="mod_logfile"/>
|
||||
|
||||
<!-- Event Handlers -->
|
||||
<load module="mod_cdr_csv"/>
|
||||
<load module="mod_event_socket"/>
|
||||
<load module="mod_rayo"/>
|
||||
|
||||
<!-- Endpoints -->
|
||||
<load module="mod_sofia"/>
|
||||
<load module="mod_loopback"/>
|
||||
|
||||
<!-- Applications -->
|
||||
<!--load module="mod_signalwire"-->
|
||||
<load module="mod_commands"/>
|
||||
<load module="mod_conference"/>
|
||||
<load module="mod_dptools"/>
|
||||
<load module="mod_expr"/>
|
||||
<load module="mod_esf"/>
|
||||
<load module="mod_fsv"/>
|
||||
<load module="mod_http_cache"/>
|
||||
|
||||
<!-- Dialplan Interfaces -->
|
||||
<load module="mod_dialplan_xml"/>
|
||||
|
||||
<!-- Codec Interfaces -->
|
||||
<load module="mod_spandsp"/>
|
||||
<load module="mod_opus"/>
|
||||
<load module="mod_ilbc"/>
|
||||
<load module="mod_h26x"/>
|
||||
|
||||
<!-- File Format Interfaces -->
|
||||
<load module="mod_sndfile"/>
|
||||
<load module="mod_native_file"/>
|
||||
<load module="mod_shell_stream"/>
|
||||
<!--For icecast/mp3 streams/files-->
|
||||
<load module="mod_shout"/>
|
||||
<!--For local streams (play all the files in a directory)-->
|
||||
<load module="mod_local_stream"/>
|
||||
<load module="mod_tone_stream"/>
|
||||
<load module="mod_ssml"/>
|
||||
|
||||
<!-- ASR /TTS -->
|
||||
<load module="mod_flite"/>
|
||||
<load module="mod_pocketsphinx"/>
|
||||
<!-- <load module="mod_tts_commandline"/> -->
|
||||
|
||||
<!-- Say -->
|
||||
<!--load module="mod_say_de"/-->
|
||||
<!--load module="mod_say_es"/-->
|
||||
<!--load module="mod_say_fr"/-->
|
||||
<!--load module="mod_say_hr"/-->
|
||||
<!--load module="mod_say_it"/-->
|
||||
<!--load module="mod_say_nl"/-->
|
||||
<!--load module="mod_say_ru"/-->
|
||||
<!--load module="mod_say_zh"/-->
|
||||
<load module="mod_say_en"/>
|
||||
<!--load module="mod_say_fa"/-->
|
||||
<!--load module="mod_say_he"/-->
|
||||
<!--load module="mod_say_hu"/-->
|
||||
<!--load module="mod_say_ja"/-->
|
||||
<!--load module="mod_say_pt"/-->
|
||||
<!--load module="mod_say_th"/-->
|
||||
<!--load module="mod_say_sv"/-->
|
||||
|
||||
</modules>
|
||||
</configuration>
|
|
@ -1,12 +0,0 @@
|
|||
<configuration name="pocketsphinx.conf" description="PocketSphinx ASR Configuration">
|
||||
<settings>
|
||||
<param name="threshold" value="400"/>
|
||||
<param name="silence-hits" value="25"/>
|
||||
<param name="listen-hits" value="1"/>
|
||||
<param name="auto-reload" value="true"/>
|
||||
<!--<param name="language-weight" value="1"/>-->
|
||||
<!--<param name="narrowband-model" value="communicator"/>-->
|
||||
<!--<param name="wideband-model" value="wsj1"/>-->
|
||||
<!--<param name="dictionary" value="default.dic"/>-->
|
||||
</settings>
|
||||
</configuration>
|
|
@ -1,4 +0,0 @@
|
|||
<configuration name="post_load_modules.conf" description="Modules">
|
||||
<modules>
|
||||
</modules>
|
||||
</configuration>
|
|
@ -1,7 +0,0 @@
|
|||
<configuration name="pre_load_modules.conf" description="Modules">
|
||||
<modules>
|
||||
<!-- Databases -->
|
||||
<!-- <load module="mod_mariadb"/> -->
|
||||
<load module="mod_pgsql"/>
|
||||
</modules>
|
||||
</configuration>
|
|
@ -1,7 +0,0 @@
|
|||
<configuration name="presence_map.conf" description="PRESENCE MAP">
|
||||
<domains>
|
||||
<domain name="$${domain}">
|
||||
<exten regex="3\d+" proto="conf"/>
|
||||
</domain>
|
||||
</domains>
|
||||
</configuration>
|
|
@ -1,315 +0,0 @@
|
|||
<configuration name="rayo.conf" description="Rayo server config">
|
||||
|
||||
<!-- rayo params -->
|
||||
<settings>
|
||||
<!-- ends idle calls : unbridged calls that have not been controlled by client in some time -->
|
||||
<param name="max-idle-sec" value="300"/>
|
||||
<!-- conference profile to use for mixers- sla = shared line appearance / conference /w no audio -->
|
||||
<param name="mixer-conf-profile" value="sla"/>
|
||||
<!-- if true, to attribute in offer uses URI instead of name/number -->
|
||||
<param name="offer-uri" value="true"/>
|
||||
<!-- how offers are distributed to clients (all, first, random). -->
|
||||
<param name="offer-algorithm" value="all"/>
|
||||
<!-- If offer is not answered after timeout, next client is offered (based on algorithm picked).
|
||||
If no other clients are available, the call is rejected. Set to 0 to disable -->
|
||||
<param name="offer-timeout-ms" value="5000"/>
|
||||
<!-- if true, channel variables are added to rayo client offer -->
|
||||
<param name="add-variables-to-offer" value="false"/>
|
||||
<!-- if true, channel variables are added to offer, ringing, answered, and end events sent to rayo clients -->
|
||||
<param name="add-variables-to-events" value="false"/>
|
||||
</settings>
|
||||
|
||||
<!-- record component params -->
|
||||
<record>
|
||||
<param name="record-file-prefix" value="$${recordings_dir}/"/>
|
||||
</record>
|
||||
|
||||
<!-- input component params -->
|
||||
<input>
|
||||
<param name="default-recognizer" value="pocketsphinx"/>
|
||||
</input>
|
||||
|
||||
<!-- send/receivefax component params -->
|
||||
<fax>
|
||||
<!-- where to store incoming faxes -->
|
||||
<param name="receivefax-file-prefix" value="/tmp/"/>
|
||||
</fax>
|
||||
|
||||
<!-- Call progress analysis configuration -->
|
||||
<!-- Define CPA detectors. These are sources for Rayo CPA signal events -->
|
||||
<!-- Detectors must fire an event that can be translated by mod_rayo into a CPA signal event -->
|
||||
<cpa>
|
||||
<!-- map DTMF events to CPA -->
|
||||
<detector name="core_dtmf_event">
|
||||
<event class="DTMF" value-header="DTMF-Digit" duration-header="DTMF-Duration">
|
||||
<signal-type value="dtmf"/>
|
||||
</event>
|
||||
</detector>
|
||||
|
||||
<!-- map mod_spandsp fax detector to the Rayo CPA events. Fires DETECTED_FAX_* event once and quits. -->
|
||||
<detector name="mod_spandsp_fax_ced">
|
||||
<start application="spandsp_start_fax_detect" data="event 'Event-Name=CUSTOM,Event-Subclass=DETECTED_FAX_CED' 500 ced"/>
|
||||
<stop application="spandsp_stop_fax_detect" data=""/>
|
||||
<event class="CUSTOM" subclass="DETECTED_FAX_CED">
|
||||
<signal-type value="fax-ced"/>
|
||||
</event>
|
||||
</detector>
|
||||
|
||||
<detector name="mod_spandsp_fax_cng">
|
||||
<start application="spandsp_start_fax_detect" data="event 'Event-Name=CUSTOM,Event-Subclass=DETECTED_FAX_CNG' 500"/>
|
||||
<stop application="spandsp_stop_fax_detect" data=""/>
|
||||
<event class="CUSTOM" subclass="DETECTED_FAX_CNG">
|
||||
<signal-type value="fax-cng"/>
|
||||
</event>
|
||||
</detector>
|
||||
|
||||
<!-- map mod_spandsp call progress tone detector to Rayo CPA signal events. Fires DETECTED_TONE events until stopped. -->
|
||||
<detector name="mod_spandsp_tone">
|
||||
<start application="spandsp_start_tone_detect" data="1"/>
|
||||
<stop application="spandsp_stop_tone_detect" data=""/>
|
||||
<!-- map tone events to Rayo CPA signal type -->
|
||||
<event class="DETECTED_TONE" type-header="Detected-Tone">
|
||||
<signal-type header-value="SIT" value="sit"/>
|
||||
<signal-type header-value="BUSY_TONE" value="busy"/>
|
||||
<signal-type header-value="REORDER_TONE" value="congestion"/>
|
||||
<signal-type header-value="RING_TONE" value="ring"/>
|
||||
</event>
|
||||
</detector>
|
||||
|
||||
<!-- map mod_avmd detector to Rayo CPA beep event. Fires avmd::beep event once. -->
|
||||
<detector name="mod_avmd">
|
||||
<start application="avmd" data=""/>
|
||||
<stop application="avmd" data="stop"/>
|
||||
<event class="CUSTOM" subclass="avmd::beep">
|
||||
<signal-type value="beep"/>
|
||||
</event>
|
||||
</detector>
|
||||
|
||||
<!-- Alternative beep detector using mod_vmd. Fires vmd::beep events until stopped. -->
|
||||
<!--detector name="mod_vmd">
|
||||
<start application="vmd" data=""/>
|
||||
<stop application="vmd" data="stop"/>
|
||||
<event class="CUSTOM" subclass="vmd::beep">
|
||||
<signal-type value="beep"/>
|
||||
</event>
|
||||
</detector-->
|
||||
</cpa>
|
||||
|
||||
<!-- XMPP server domain -->
|
||||
<domain name="$${rayo_domain_name}" shared-secret="ClueCon">
|
||||
<!-- use this instead if you want secure XMPP client to server connections. Put .crt and .key file in freeswitch/certs -->
|
||||
<!--domain name="$${rayo_domain_name}" shared-secret="ClueCon" cert="$${base_dir}/certs/$${rayo_domain_name}.crt" key="$${base_dir}/certs/$${rayo_domain_name}.key"-->
|
||||
|
||||
<!-- Listeners for new Rayo client connections -->
|
||||
<!--listen type="c2s" port="5222" address="$${local_ip_v4}" acl="rayo-clients"/-->
|
||||
<listen type="c2s" port="5222" address="$${rayo_ip}" acl=""/>
|
||||
|
||||
<!-- Listeners for new server connections -->
|
||||
<!--listen type="s2s" port="5269" address="$${local_ip_v4}" acl="rayo-servers"/-->
|
||||
|
||||
<!-- servers to connect to -->
|
||||
<!--connect port="5269" address="node.example.com" domain="example.com"/-->
|
||||
|
||||
<!-- Authorized users -->
|
||||
<users>
|
||||
<user name="usera" password="1"/>
|
||||
</users>
|
||||
</domain>
|
||||
|
||||
<!-- URI mapping to endpoint / gateway -->
|
||||
<dial-gateways>
|
||||
<dial-gateway uriprefix="default" dialprefix="sofia/gateway/outbound/" strip="0"/>
|
||||
<dial-gateway uriprefix="sip:" dialprefix="sofia/external/" strip="0"/>
|
||||
<dial-gateway uriprefix="tel:" dialprefix="sofia/gateway/outbound/" strip="4"/>
|
||||
<!-- pass through user and sofia unaltered -->
|
||||
<dial-gateway uriprefix="user/" dialprefix="" strip=""/>
|
||||
<dial-gateway uriprefix="sofia/" dialprefix="" strip=""/>
|
||||
<dial-gateway uriprefix="loopback/" dialprefix="" strip=""/>
|
||||
</dial-gateways>
|
||||
|
||||
<!-- IQ request aliases. Used mainly for testing purposes or for controlling a rayo call via the console -->
|
||||
<aliases>
|
||||
<alias name="detect" target="call" args="1"><![CDATA[<input xmlns="urn:xmpp:rayo:input:1" mode="cpa"><grammar url="urn:xmpp:rayo:cpa:$1:1"/></input>]]></alias>
|
||||
<alias name="detect-once" target="call" args="1"><![CDATA[<input xmlns="urn:xmpp:rayo:input:1" mode="cpa"><grammar url="urn:xmpp:rayo:cpa:$1:1?terminate=true"/></input>]]></alias>
|
||||
<alias name="detect-tones" target="call"><![CDATA[<input xmlns="urn:xmpp:rayo:input:1" mode="cpa"><grammar url="urn:xmpp:rayo:cpa:busy:1"/><grammar url="urn:xmpp:rayo:cpa:congestion:1"/><grammar url="urn:xmpp:rayo:cpa:sit:1"/></input>]]></alias>
|
||||
<alias name="ping" target="external"><![CDATA[<iq type="get"><ping xmlns="urn:xmpp:ping"/></iq>]]></alias>
|
||||
<alias name="dial" target="server" args="2"><![CDATA[<dial xmlns="urn:xmpp:rayo:1" from="$1" to="$2"/>]]></alias>
|
||||
<alias name="answer" target="call"><![CDATA[<answer xmlns="urn:xmpp:rayo:1"/>]]></alias>
|
||||
<alias name="hangup" target="call"><![CDATA[<hangup xmlns="urn:xmpp:rayo:1"/>]]></alias>
|
||||
<alias name="join" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" call-uri="xmpp:$1"/>]]></alias>
|
||||
<alias name="join_mixer_duplex" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="duplex"/>]]></alias>
|
||||
<alias name="join_mixer_send" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="send"/>]]></alias>
|
||||
<alias name="join_mixer_recv" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="recv"/>]]></alias>
|
||||
<alias name="unjoin_mixer" target="call" args="1"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1" mixer-name="$1"/>]]></alias>
|
||||
<alias name="unjoin" target="call"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1"/>]]></alias>
|
||||
<alias name="unjoin_call" target="call" args="1"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1" call-uri="xmpp:$1"/>]]></alias>
|
||||
<alias name="stop" target="component"><![CDATA[<stop xmlns="urn:xmpp:rayo:ext:1"/>]]></alias>
|
||||
<alias name="output_bad" target="call"><![CDATA[<output xmlns="urn:xmpp:rayo:output:1" repeat-time="100"></output>]]></alias>
|
||||
<alias name="pause" target="output"><![CDATA[<pause xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
|
||||
<alias name="resume" target="output"><![CDATA[<resume xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
|
||||
<alias name="speed-up" target="output"><![CDATA[<speed-up xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
|
||||
<alias name="speed-down" target="output"><![CDATA[<speed-down xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
|
||||
<alias name="volume-up" target="output"><![CDATA[<volume-up xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
|
||||
<alias name="volume-down" target="output"><![CDATA[<volume-down xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
|
||||
<alias name="receivefax" target="call"><![CDATA[<receivefax xmlns="urn:xmpp:rayo:fax:1"/>]]></alias>
|
||||
<alias name="sendfax" target="call" args="1"><![CDATA[<sendfax xmlns="urn:xmpp:rayo:fax:1"><document xmlns="urn:xmpp:rayo:fax:1" url="$1"/></sendfax>]]></alias>
|
||||
<alias name="record" target="call"><![CDATA[<record xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
|
||||
<alias name="record_pause" target="record"><![CDATA[<pause xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
|
||||
<alias name="record_resume" target="record"><![CDATA[<resume xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
|
||||
<alias name="prompt_barge" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="5">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="prompt_no_barge" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="false">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="5">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="prompt_long" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="prompt_multi_digit" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="prompt_terminator" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="prompt_input_bad" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="prompt_output_bad" target="call">
|
||||
<![CDATA[
|
||||
<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
|
||||
<output xmlns="urn:xmpp:rayo:output:1" repeat-time="100">
|
||||
<document content-type="application/ssml+xml">
|
||||
<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
|
||||
</document>
|
||||
</output>
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
</prompt>
|
||||
]]>
|
||||
</alias>
|
||||
<alias name="input" target="call">
|
||||
<![CDATA[
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
|
||||
<grammar content-type="application/srgs+xml">
|
||||
<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
]]>
|
||||
</alias>
|
||||
|
||||
<alias name="input_voice_yesno_pocketsphinx" target="call">
|
||||
<![CDATA[
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="voice" recognizer="pocketsphinx" max-silence="5000" initial-timeout="5000">
|
||||
<grammar content-type="application/srgs+xml>
|
||||
<![CDATA[
|
||||
<grammar xmlns="http://www.w3.org/2001/06/grammar"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
|
||||
xml:lang="en-US" version="1.0">
|
||||
<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
|
||||
]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
]]>
|
||||
</alias>
|
||||
|
||||
<alias name="input_voice_yesno_default" target="call">
|
||||
<![CDATA[
|
||||
<input xmlns="urn:xmpp:rayo:input:1" mode="voice" max-silence="5000" initial-timeout="5000">
|
||||
<grammar content-type="application/srgs+xml>
|
||||
<![CDATA[
|
||||
<grammar xmlns="http://www.w3.org/2001/06/grammar"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
|
||||
xml:lang="en-US" version="1.0">
|
||||
<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
|
||||
]]]]><![CDATA[>
|
||||
</grammar>
|
||||
</input>
|
||||
]]>
|
||||
</alias>
|
||||
|
||||
</aliases>
|
||||
|
||||
</configuration>
|
|
@ -1,9 +0,0 @@
|
|||
<configuration name="shout.conf" description="mod shout config">
|
||||
<settings>
|
||||
<!-- Don't change these unless you are insane -->
|
||||
<!--<param name="decoder" value="i586"/>-->
|
||||
<!--<param name="volume" value=".1"/>-->
|
||||
<!-- mod_shout sets output amplitude scale to 8192 by default - preserve mpg123 default of 32768 -->
|
||||
<param name="outscale" value="32768"/>
|
||||
</settings>
|
||||
</configuration>
|
|
@ -1,19 +0,0 @@
|
|||
<configuration name="sofia.conf" description="sofia Endpoint">
|
||||
|
||||
<global_settings>
|
||||
<param name="log-level" value="0"/>
|
||||
<!-- <param name="auto-restart" value="false"/> -->
|
||||
<param name="debug-presence" value="0"/>
|
||||
<!-- <param name="capture-server" value="udp:homer.domain.com:5060"/> -->
|
||||
</global_settings>
|
||||
|
||||
<!--
|
||||
The rabbit hole goes deep. This includes all the
|
||||
profiles in the sip_profiles directory that is up
|
||||
one level from this directory.
|
||||
-->
|
||||
<profiles>
|
||||
<X-PRE-PROCESS cmd="include" data="../sip_profiles/*.xml"/>
|
||||
</profiles>
|
||||
|
||||
</configuration>
|
|
@ -1,113 +0,0 @@
|
|||
<configuration name="spandsp.conf" description="SpanDSP config">
|
||||
<modem-settings>
|
||||
<!--
|
||||
total-modems set to N will create that many soft-modems.
|
||||
If you use them with Hylafax you need the following for each one numbered 0..N:
|
||||
|
||||
1) A line like this in /etc/inittab:
|
||||
|
||||
f0:2345:respawn:/usr/lib/fax/faxgetty /dev/FS0
|
||||
|
||||
2) copy conf/config.FS0 to /var/spool/hylafax/etc (or wherver the appropriate dir is on your system)
|
||||
|
||||
Subsequent modem configs would increment the 0 to 1 and so on.
|
||||
|
||||
-->
|
||||
<param name="total-modems" value="0"/>
|
||||
|
||||
<!-- Default context and dialplan to use on inbound calls from the modems -->
|
||||
<param name="context" value="default"/>
|
||||
<param name="dialplan" value="XML"/>
|
||||
|
||||
<!-- Extra tracing for debugging -->
|
||||
<param name="verbose" value="false"/>
|
||||
</modem-settings>
|
||||
|
||||
<fax-settings>
|
||||
<param name="use-ecm" value="true"/>
|
||||
<param name="verbose" value="false"/>
|
||||
<param name="disable-v17" value="false"/>
|
||||
<param name="ident" value="SpanDSP Fax Ident"/>
|
||||
<param name="header" value="SpanDSP Fax Header"/>
|
||||
|
||||
<param name="spool-dir" value="/tmp"/>
|
||||
<param name="file-prefix" value="faxrx"/>
|
||||
</fax-settings>
|
||||
|
||||
<descriptors>
|
||||
|
||||
<!-- These tones are defined in Annex to ITU Operational Bulletin No. 781 - 1.II.2003 -->
|
||||
<!-- Various Tones Used in National Networks (According to ITU-T Recommendation E.180)(03/1998) -->
|
||||
|
||||
<!-- North America -->
|
||||
<descriptor name="1">
|
||||
<tone name="CED_TONE">
|
||||
<element freq1="2100" freq2="0" min="700" max="0"/>
|
||||
</tone>
|
||||
<tone name="SIT">
|
||||
<element freq1="950" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1400" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1800" freq2="0" min="256" max="400"/>
|
||||
</tone>
|
||||
<tone name="RING_TONE" description="North America ring">
|
||||
<element freq1="440" freq2="480" min="1200" max="0"/>
|
||||
</tone>
|
||||
<tone name="REORDER_TONE">
|
||||
<element freq1="480" freq2="620" min="224" max="316"/>
|
||||
<element freq1="0" freq2="0" min="168" max="352"/>
|
||||
<element freq1="480" freq2="620" min="224" max="316"/>
|
||||
</tone>
|
||||
<tone name="BUSY_TONE">
|
||||
<element freq1="480" freq2="620" min="464" max="536"/>
|
||||
<element freq1="0" freq2="0" min="464" max="572"/>
|
||||
<element freq1="480" freq2="620" min="464" max="536"/>
|
||||
</tone>
|
||||
</descriptor>
|
||||
|
||||
<!-- United Kingdom -->
|
||||
<descriptor name="44">
|
||||
<tone name="CED_TONE">
|
||||
<element freq1="2100" freq2="0" min="500" max="0"/>
|
||||
</tone>
|
||||
<tone name="SIT">
|
||||
<element freq1="950" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1400" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1800" freq2="0" min="256" max="400"/>
|
||||
</tone>
|
||||
<tone name="REORDER_TONE">
|
||||
<element freq1="400" freq2="0" min="368" max="416"/>
|
||||
<element freq1="0" freq2="0" min="336" max="368"/>
|
||||
<element freq1="400" freq2="0" min="256" max="288"/>
|
||||
<element freq1="0" freq2="0" min="512" max="544"/>
|
||||
</tone>
|
||||
<tone name="BUSY_TONE">
|
||||
<element freq1="400" freq2="0" min="352" max="384"/>
|
||||
<element freq1="0" freq2="0" min="352" max="384"/>
|
||||
<element freq1="400" freq2="0" min="352" max="384"/>
|
||||
<element freq1="0" freq2="0" min="352" max="384"/>
|
||||
</tone>
|
||||
</descriptor>
|
||||
|
||||
<!-- Germany -->
|
||||
<descriptor name="49">
|
||||
<tone name="CED_TONE">
|
||||
<element freq1="2100" freq2="0" min="500" max="0"/>
|
||||
</tone>
|
||||
<tone name="SIT">
|
||||
<element freq1="900" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1400" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1800" freq2="0" min="256" max="400"/>
|
||||
</tone>
|
||||
<tone name="REORDER_TONE">
|
||||
<element freq1="425" freq2="0" min="224" max="272"/>
|
||||
<element freq1="0" freq2="0" min="224" max="272"/>
|
||||
</tone>
|
||||
<tone name="BUSY_TONE">
|
||||
<element freq1="425" freq2="0" min="464" max="516"/>
|
||||
<element freq1="0" freq2="0" min="464" max="516"/>
|
||||
</tone>
|
||||
</descriptor>
|
||||
</descriptors>
|
||||
|
||||
</configuration>
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
<configuration name="ssml.conf" description="SSML parser config">
|
||||
|
||||
<!-- voices in order of preference -->
|
||||
<tts-voices>
|
||||
<voice name="slt" language="en-US" gender="female" prefix="tts://flite|slt|"/>
|
||||
<voice name="kal" language="en-US" gender="male" prefix="tts://flite|kal|"/>
|
||||
<voice name="rms" language="en-US" gender="male" prefix="tts://flite|rms|"/>
|
||||
<voice name="awb" language="en-US" gender="male" prefix="tts://flite|awb|"/>
|
||||
</tts-voices>
|
||||
|
||||
<!-- maps ISO language to say module -->
|
||||
<language-map>
|
||||
<language iso="en-US" say-module="en" language="en"/>
|
||||
</language-map>
|
||||
|
||||
<!-- say voices in order of preference -->
|
||||
<say-voices>
|
||||
<voice name="callie" language="en-US" gender="female" prefix="$${sound_prefix}/"/>
|
||||
</say-voices>
|
||||
|
||||
<!-- map interpret-as to say macros -->
|
||||
<macros>
|
||||
<macro name="ordinal" type="number" method="counted"/>
|
||||
<macro name="cardinal" type="number" method="pronounced"/>
|
||||
<macro name="characters" type="name_spelled" method="pronounced"/>
|
||||
<macro name="telephone" type="telephone_number" method="pronounced"/>
|
||||
</macros>
|
||||
|
||||
</configuration>
|
|
@ -1,190 +0,0 @@
|
|||
<configuration name="switch.conf" description="Core Configuration">
|
||||
|
||||
<cli-keybindings>
|
||||
<key name="1" value="help"/>
|
||||
<key name="2" value="status"/>
|
||||
<key name="3" value="show channels"/>
|
||||
<key name="4" value="show calls"/>
|
||||
<key name="5" value="sofia status"/>
|
||||
<key name="6" value="reloadxml"/>
|
||||
<key name="7" value="console loglevel 0"/>
|
||||
<key name="8" value="console loglevel 7"/>
|
||||
<key name="9" value="sofia status profile internal"/>
|
||||
<key name="10" value="sofia profile internal siptrace on"/>
|
||||
<key name="11" value="sofia profile internal siptrace off"/>
|
||||
<key name="12" value="version"/>
|
||||
</cli-keybindings>
|
||||
|
||||
<default-ptimes>
|
||||
<!-- Set this to override the 20ms assumption of various codecs in the sdp with no ptime defined -->
|
||||
<!-- <codec name="G729" ptime="40"/> -->
|
||||
</default-ptimes>
|
||||
|
||||
<settings>
|
||||
<!-- Colorize the Console -->
|
||||
<param name="colorize-console" value="true"/>
|
||||
|
||||
<!--Include full timestamps in dialplan logs -->
|
||||
<param name="dialplan-timestamps" value="false"/>
|
||||
|
||||
<!-- Run the timer at 20ms by default and drop down as needed unless you set 1m-timer=true which was previous default -->
|
||||
<!-- <param name="1ms-timer" value="true"/> -->
|
||||
|
||||
<!--
|
||||
Set the Switch Name for HA environments.
|
||||
When setting the switch name, it will override the system hostname for all DB and CURL requests
|
||||
allowing cluster environments such as RHCS to have identical FreeSWITCH configurations but run
|
||||
as different hostnames.
|
||||
-->
|
||||
<!-- <param name="switchname" value="freeswitch"/> -->
|
||||
|
||||
<!-- Maximum number of simultaneous DB handles open -->
|
||||
<param name="max-db-handles" value="50"/>
|
||||
<!-- Maximum number of seconds to wait for a new DB handle before failing -->
|
||||
<param name="db-handle-timeout" value="10"/>
|
||||
|
||||
<!-- Minimum idle CPU before refusing calls -->
|
||||
<!-- <param name="min-idle-cpu" value="25"/> -->
|
||||
|
||||
<!--
|
||||
Max number of sessions to allow at any given time.
|
||||
|
||||
NOTICE: If you're driving 28 T1's in a single box you should set this to 644*2 or 1288
|
||||
this will ensure you're able to use the entire DS3 without a problem. Otherwise you'll
|
||||
be 144 channels short of always filling that DS3 up which can translate into waste.
|
||||
-->
|
||||
<param name="max-sessions" value="1000"/>
|
||||
<!--Most channels to create per second -->
|
||||
<param name="sessions-per-second" value="30"/>
|
||||
<!-- Default Global Log Level - value is one of debug,info,notice,warning,err,crit,alert -->
|
||||
<param name="loglevel" value="debug"/>
|
||||
|
||||
<!-- Set the core DEBUG level (0-10) -->
|
||||
<!-- <param name="debug-level" value="10"/> -->
|
||||
|
||||
<!-- SQL Buffer length within rage of 32k to 10m -->
|
||||
<!-- <param name="sql-buffer-len" value="1m"/> -->
|
||||
<!-- Maximum SQL Buffer length must be greater than sql-buffer-len -->
|
||||
<!-- <param name="max-sql-buffer-len" value="2m"/> -->
|
||||
|
||||
<!--
|
||||
The min-dtmf-duration specifies the minimum DTMF duration to use on
|
||||
outgoing events. Events shorter than this will be increased in duration
|
||||
to match min_dtmf_duration. You cannot configure a dtmf duration on a
|
||||
profile that is less than this setting. You may increase this value,
|
||||
but cannot set it lower than 400. This value cannot exceed
|
||||
max-dtmf-duration. -->
|
||||
<!-- <param name="min-dtmf-duration" value="400"/> -->
|
||||
|
||||
<!--
|
||||
The max-dtmf-duration caps the playout of a DTMF event at the specified
|
||||
duration. Events exceeding this duration will be truncated to this
|
||||
duration. You cannot configure a duration on a profile that exceeds
|
||||
this setting. This setting can be lowered, but cannot exceed 192000.
|
||||
This setting cannot be set lower than min_dtmf_duration. -->
|
||||
<!-- <param name="max-dtmf-duration" value="192000"/> -->
|
||||
|
||||
<!--
|
||||
The default_dtmf_duration specifies the DTMF duration to use on
|
||||
originated DTMF events or on events that are received without a
|
||||
duration specified. This value can be increased or lowered. This
|
||||
value is lower-bounded by min_dtmf_duration and upper-bounded by
|
||||
max-dtmf-duration\. -->
|
||||
<!-- <param name="default-dtmf-duration" value="2000"/> -->
|
||||
|
||||
<!--
|
||||
If you want to send out voicemail notifications via Windows you'll need to change the mailer-app
|
||||
variable to the setting below:
|
||||
|
||||
<param name="mailer-app" value="msmtp"/>
|
||||
|
||||
Do not change mailer-app-args.
|
||||
You will also need to download a sendmail clone for Windows (msmtp). This version works without issue:
|
||||
http://msmtp.sourceforge.net/index.html. Download and copy the .exe to %winddir%\system32.
|
||||
You'll need to create a small config file for smtp credentials (host name, authentication, tls, etc.) in
|
||||
%USERPROFILE%\Application Data\ called "msmtprc.txt". Below is a sample copy of this file:
|
||||
|
||||
###################################
|
||||
# The SMTP server of the provider.
|
||||
account provider
|
||||
host smtp.myisp.com
|
||||
from john@myisp.com
|
||||
auth login
|
||||
user johndoe
|
||||
password mypassword
|
||||
|
||||
# Set a default account
|
||||
account default : provider
|
||||
###################################
|
||||
|
||||
-->
|
||||
|
||||
<param name="mailer-app" value="sendmail"/>
|
||||
<param name="mailer-app-args" value="-t"/>
|
||||
<param name="dump-cores" value="yes"/>
|
||||
|
||||
<!-- Enable verbose channel events to include every detail about a channel on every event -->
|
||||
<!-- <param name="verbose-channel-events" value="no"/> -->
|
||||
|
||||
<!-- Enable clock nanosleep -->
|
||||
<!-- <param name="enable-clock-nanosleep" value="true"/> -->
|
||||
|
||||
<!-- Enable monotonic timing -->
|
||||
<!-- <param name="enable-monotonic-timing" value="true"/> -->
|
||||
|
||||
<!-- NEEDS DOCUMENTATION -->
|
||||
<!-- <param name="enable-softtimer-timerfd" value="true"/> -->
|
||||
<!-- <param name="enable-cond-yield" value="true"/> -->
|
||||
<!-- <param name="enable-timer-matrix" value="true"/> -->
|
||||
<!-- <param name="threaded-system-exec" value="true"/> -->
|
||||
<!-- <param name="tipping-point" value="0"/> -->
|
||||
<!-- <param name="timer-affinity" value="disabled"/> -->
|
||||
<!-- NEEDS DOCUMENTATION -->
|
||||
|
||||
<!-- RTP port range -->
|
||||
<!-- <param name="rtp-start-port" value="16384"/> -->
|
||||
<!-- <param name="rtp-end-port" value="32768"/> -->
|
||||
|
||||
<!--
|
||||
Native PostgreSQL support was removed from the FreeSWITCH Core!
|
||||
=================================
|
||||
NOTICE: You MUST enable mod_pgsql
|
||||
=================================
|
||||
According to https://www.postgresql.org/docs/9.6/libpq-connect.html#LIBPQ-CONNSTRING
|
||||
There are two accepted formats for connection strings supported by the libpq library:
|
||||
* For plain keyword = value strings use pgsql://
|
||||
pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'
|
||||
* For RFC 3986 URIs use postgresql:// or postgres://
|
||||
postgresql://
|
||||
postgresql://localhost
|
||||
postgresql://localhost:5433
|
||||
postgresql://localhost/mydb
|
||||
postgresql://user@localhost
|
||||
postgresql://user:secret@localhost
|
||||
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
|
||||
postgresql:///mydb?host=localhost&port=5433
|
||||
-->
|
||||
<!-- <param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" /> -->
|
||||
<!-- <param name="core-db-dsn" value="postgresql://freeswitch:@127.0.0.1/freeswitch?options=-c%20client_min_messages%3DNOTICE&application_name=freeswitch" /> -->
|
||||
<!-- <param name="core-db-dsn" value="mariadb://Server=localhost;Database=freeswitch;Uid=freeswitch;Pwd=pass;" /> -->
|
||||
<!-- <param name="core-db-dsn" value="dsn:username:password" /> -->
|
||||
<!--
|
||||
Allow to specify the sqlite db at a different location (In this example, move it to ramdrive for
|
||||
better performance on most linux distro (note, you loose the data if you reboot))
|
||||
-->
|
||||
<!-- <param name="core-db-name" value="/dev/shm/core.db" /> -->
|
||||
|
||||
<!-- The system will create all the db schemas automatically, set this to false to avoid this behaviour -->
|
||||
<!-- <param name="auto-create-schemas" value="true"/> -->
|
||||
<!-- <param name="auto-clear-sql" value="true"/> -->
|
||||
<!-- <param name="enable-early-hangup" value="true"/> -->
|
||||
|
||||
<!-- <param name="core-dbtype" value="MSSQL"/> -->
|
||||
|
||||
<!-- Allow multiple registrations to the same account in the central registration table -->
|
||||
<!-- <param name="multiple-registrations" value="true"/> -->
|
||||
|
||||
</settings>
|
||||
|
||||
</configuration>
|
||||
|
|
@ -1,661 +0,0 @@
|
|||
<configuration name="timezones.conf" description="Timezones">
|
||||
<timezones>
|
||||
<zone name="Africa/Abidjan" value="GMT0" />
|
||||
<zone name="Africa/Accra" value="GMT0" />
|
||||
<zone name="Africa/Addis_Ababa" value="EAT-3" />
|
||||
<zone name="Africa/Algiers" value="CET-1" />
|
||||
<zone name="Africa/Asmara" value="EAT-3" />
|
||||
<zone name="Africa/Asmera" value="EAT-3" />
|
||||
<zone name="Africa/Bamako" value="GMT0" />
|
||||
<zone name="Africa/Bangui" value="WAT-1" />
|
||||
<zone name="Africa/Banjul" value="GMT0" />
|
||||
<zone name="Africa/Bissau" value="GMT0" />
|
||||
<zone name="Africa/Blantyre" value="CAT-2" />
|
||||
<zone name="Africa/Brazzaville" value="WAT-1" />
|
||||
<zone name="Africa/Bujumbura" value="CAT-2" />
|
||||
<zone name="Africa/Cairo" value="EET-2EEST,M4.5.5/0,M10.5.4/24" />
|
||||
<zone name="Africa/Casablanca" value="STD-1" />
|
||||
<zone name="Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Africa/Conakry" value="GMT0" />
|
||||
<zone name="Africa/Dakar" value="GMT0" />
|
||||
<zone name="Africa/Dar_es_Salaam" value="EAT-3" />
|
||||
<zone name="Africa/Djibouti" value="EAT-3" />
|
||||
<zone name="Africa/Douala" value="WAT-1" />
|
||||
<zone name="Africa/El_Aaiun" value="STD-1" />
|
||||
<zone name="Africa/Freetown" value="GMT0" />
|
||||
<zone name="Africa/Gaborone" value="CAT-2" />
|
||||
<zone name="Africa/Harare" value="CAT-2" />
|
||||
<zone name="Africa/Johannesburg" value="SAST-2" />
|
||||
<zone name="Africa/Juba" value="CAT-2" />
|
||||
<zone name="Africa/Kampala" value="EAT-3" />
|
||||
<zone name="Africa/Khartoum" value="CAT-2" />
|
||||
<zone name="Africa/Kigali" value="CAT-2" />
|
||||
<zone name="Africa/Kinshasa" value="WAT-1" />
|
||||
<zone name="Africa/Lagos" value="WAT-1" />
|
||||
<zone name="Africa/Libreville" value="WAT-1" />
|
||||
<zone name="Africa/Lome" value="GMT0" />
|
||||
<zone name="Africa/Luanda" value="WAT-1" />
|
||||
<zone name="Africa/Lubumbashi" value="CAT-2" />
|
||||
<zone name="Africa/Lusaka" value="CAT-2" />
|
||||
<zone name="Africa/Malabo" value="WAT-1" />
|
||||
<zone name="Africa/Maputo" value="CAT-2" />
|
||||
<zone name="Africa/Maseru" value="SAST-2" />
|
||||
<zone name="Africa/Mbabane" value="SAST-2" />
|
||||
<zone name="Africa/Mogadishu" value="EAT-3" />
|
||||
<zone name="Africa/Monrovia" value="GMT0" />
|
||||
<zone name="Africa/Nairobi" value="EAT-3" />
|
||||
<zone name="Africa/Ndjamena" value="WAT-1" />
|
||||
<zone name="Africa/Niamey" value="WAT-1" />
|
||||
<zone name="Africa/Nouakchott" value="GMT0" />
|
||||
<zone name="Africa/Ouagadougou" value="GMT0" />
|
||||
<zone name="Africa/Porto-Novo" value="WAT-1" />
|
||||
<zone name="Africa/Sao_Tome" value="GMT0" />
|
||||
<zone name="Africa/Timbuktu" value="GMT0" />
|
||||
<zone name="Africa/Tripoli" value="EET-2" />
|
||||
<zone name="Africa/Tunis" value="CET-1" />
|
||||
<zone name="Africa/Windhoek" value="CAT-2" />
|
||||
|
||||
<zone name="America/Adak" value="HST10HDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Anguilla" value="AST4" />
|
||||
<zone name="America/Antigua" value="AST4" />
|
||||
<zone name="America/Araguaina" value="STD3" />
|
||||
<zone name="America/Argentina/Buenos_Aires" value="STD3" />
|
||||
<zone name="America/Argentina/Catamarca" value="STD3" />
|
||||
<zone name="America/Argentina/ComodRivadavia" value="STD3" />
|
||||
<zone name="America/Argentina/Cordoba" value="STD3" />
|
||||
<zone name="America/Argentina/Jujuy" value="STD3" />
|
||||
<zone name="America/Argentina/La_Rioja" value="STD3" />
|
||||
<zone name="America/Argentina/Mendoza" value="STD3" />
|
||||
<zone name="America/Argentina/Rio_Gallegos" value="STD3" />
|
||||
<zone name="America/Argentina/Salta" value="STD3" />
|
||||
<zone name="America/Argentina/San_Juan" value="STD3" />
|
||||
<zone name="America/Argentina/San_Luis" value="STD3" />
|
||||
<zone name="America/Argentina/Tucuman" value="STD3" />
|
||||
<zone name="America/Argentina/Ushuaia" value="STD3" />
|
||||
<zone name="America/Aruba" value="AST4" />
|
||||
<zone name="America/Asuncion" value="STD4DST,M10.1.0/0,M3.4.0/0" />
|
||||
<zone name="America/Atikokan" value="EST5" />
|
||||
<zone name="America/Atka" value="HST10HDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Bahia" value="STD3" />
|
||||
<zone name="America/Bahia_Banderas" value="CST6" />
|
||||
<zone name="America/Barbados" value="AST4" />
|
||||
<zone name="America/Belem" value="STD3" />
|
||||
<zone name="America/Belize" value="CST6" />
|
||||
<zone name="America/Blanc-Sablon" value="AST4" />
|
||||
<zone name="America/Boa_Vista" value="STD4" />
|
||||
<zone name="America/Bogota" value="STD5" />
|
||||
<zone name="America/Boise" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Buenos_Aires" value="STD3" />
|
||||
<zone name="America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Campo_Grande" value="STD4" />
|
||||
<zone name="America/Cancun" value="EST5" />
|
||||
<zone name="America/Caracas" value="STD4" />
|
||||
<zone name="America/Catamarca" value="STD3" />
|
||||
<zone name="America/Cayenne" value="STD3" />
|
||||
<zone name="America/Cayman" value="EST5" />
|
||||
<zone name="America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Chihuahua" value="CST6" />
|
||||
<zone name="America/Ciudad_Juarez" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Coral_Harbour" value="EST5" />
|
||||
<zone name="America/Cordoba" value="STD3" />
|
||||
<zone name="America/Costa_Rica" value="CST6" />
|
||||
<zone name="America/Creston" value="MST7" />
|
||||
<zone name="America/Cuiaba" value="STD4" />
|
||||
<zone name="America/Curacao" value="AST4" />
|
||||
<zone name="America/Danmarkshavn" value="GMT0" />
|
||||
<zone name="America/Dawson" value="MST7" />
|
||||
<zone name="America/Dawson_Creek" value="MST7" />
|
||||
<zone name="America/Denver" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Dominica" value="AST4" />
|
||||
<zone name="America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Eirunepe" value="STD5" />
|
||||
<zone name="America/El_Salvador" value="CST6" />
|
||||
<zone name="America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Fort_Nelson" value="MST7" />
|
||||
<zone name="America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Fortaleza" value="STD3" />
|
||||
<zone name="America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Godthab" value="STD2DST,M3.5.0/-1,M10.5.0/0" />
|
||||
<zone name="America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Grand_Turk" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Grenada" value="AST4" />
|
||||
<zone name="America/Guadeloupe" value="AST4" />
|
||||
<zone name="America/Guatemala" value="CST6" />
|
||||
<zone name="America/Guayaquil" value="STD5" />
|
||||
<zone name="America/Guyana" value="STD4" />
|
||||
<zone name="America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
|
||||
<zone name="America/Hermosillo" value="MST7" />
|
||||
<zone name="America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Jamaica" value="EST5" />
|
||||
<zone name="America/Jujuy" value="STD3" />
|
||||
<zone name="America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Kralendijk" value="AST4" />
|
||||
<zone name="America/La_Paz" value="STD4" />
|
||||
<zone name="America/Lima" value="STD5" />
|
||||
<zone name="America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Lower_Princes" value="AST4" />
|
||||
<zone name="America/Maceio" value="STD3" />
|
||||
<zone name="America/Managua" value="CST6" />
|
||||
<zone name="America/Manaus" value="STD4" />
|
||||
<zone name="America/Marigot" value="AST4" />
|
||||
<zone name="America/Martinique" value="AST4" />
|
||||
<zone name="America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Mazatlan" value="MST7" />
|
||||
<zone name="America/Mendoza" value="STD3" />
|
||||
<zone name="America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Merida" value="CST6" />
|
||||
<zone name="America/Metlakatla" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Mexico_City" value="CST6" />
|
||||
<zone name="America/Miquelon" value="STD3DST,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Monterrey" value="CST6" />
|
||||
<zone name="America/Montevideo" value="STD3" />
|
||||
<zone name="America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Montserrat" value="AST4" />
|
||||
<zone name="America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/New_York" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Noronha" value="STD2" />
|
||||
<zone name="America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Nuuk" value="STD2DST,M3.5.0/-1,M10.5.0/0" />
|
||||
<zone name="America/Ojinaga" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Panama" value="EST5" />
|
||||
<zone name="America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Paramaribo" value="STD3" />
|
||||
<zone name="America/Phoenix" value="MST7" />
|
||||
<zone name="America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Port_of_Spain" value="AST4" />
|
||||
<zone name="America/Porto_Acre" value="STD5" />
|
||||
<zone name="America/Porto_Velho" value="STD4" />
|
||||
<zone name="America/Puerto_Rico" value="AST4" />
|
||||
<zone name="America/Punta_Arenas" value="STD3" />
|
||||
<zone name="America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Recife" value="STD3" />
|
||||
<zone name="America/Regina" value="CST6" />
|
||||
<zone name="America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Rio_Branco" value="STD5" />
|
||||
<zone name="America/Rosario" value="STD3" />
|
||||
<zone name="America/Santa_Isabel" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Santarem" value="STD3" />
|
||||
<zone name="America/Santiago" value="STD4DST,M9.1.6/24,M4.1.6/24" />
|
||||
<zone name="America/Santo_Domingo" value="AST4" />
|
||||
<zone name="America/Sao_Paulo" value="STD3" />
|
||||
<zone name="America/Scoresbysund" value="STD1DST,M3.5.0/0,M10.5.0/1" />
|
||||
<zone name="America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/St_Barthelemy" value="AST4" />
|
||||
<zone name="America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/St_Kitts" value="AST4" />
|
||||
<zone name="America/St_Lucia" value="AST4" />
|
||||
<zone name="America/St_Thomas" value="AST4" />
|
||||
<zone name="America/St_Vincent" value="AST4" />
|
||||
<zone name="America/Swift_Current" value="CST6" />
|
||||
<zone name="America/Tegucigalpa" value="CST6" />
|
||||
<zone name="America/Thule" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Tortola" value="AST4" />
|
||||
<zone name="America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Virgin" value="AST4" />
|
||||
<zone name="America/Whitehorse" value="MST7" />
|
||||
<zone name="America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
|
||||
<zone name="Antarctica/Casey" value="STD-11" />
|
||||
<zone name="Antarctica/Davis" value="STD-7" />
|
||||
<zone name="Antarctica/DumontDUrville" value="STD-10" />
|
||||
<zone name="Antarctica/Macquarie" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Antarctica/Mawson" value="STD-5" />
|
||||
<zone name="Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
|
||||
<zone name="Antarctica/Palmer" value="STD3" />
|
||||
<zone name="Antarctica/Rothera" value="STD3" />
|
||||
<zone name="Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
|
||||
<zone name="Antarctica/Syowa" value="STD-3" />
|
||||
<zone name="Antarctica/Troll" value="STD-0DST-2,M3.5.0/1,M10.5.0/3" />
|
||||
<zone name="Antarctica/Vostok" value="STD-6" />
|
||||
|
||||
<zone name="Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
|
||||
<zone name="Asia/Aden" value="STD-3" />
|
||||
<zone name="Asia/Almaty" value="STD-6" />
|
||||
<zone name="Asia/Amman" value="STD-3" />
|
||||
<zone name="Asia/Anadyr" value="STD-12" />
|
||||
<zone name="Asia/Aqtau" value="STD-5" />
|
||||
<zone name="Asia/Aqtobe" value="STD-5" />
|
||||
<zone name="Asia/Ashgabat" value="STD-5" />
|
||||
<zone name="Asia/Ashkhabad" value="STD-5" />
|
||||
<zone name="Asia/Atyrau" value="STD-5" />
|
||||
<zone name="Asia/Baghdad" value="STD-3" />
|
||||
<zone name="Asia/Bahrain" value="STD-3" />
|
||||
<zone name="Asia/Baku" value="STD-4" />
|
||||
<zone name="Asia/Bangkok" value="STD-7" />
|
||||
<zone name="Asia/Barnaul" value="STD-7" />
|
||||
<zone name="Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" />
|
||||
<zone name="Asia/Bishkek" value="STD-6" />
|
||||
<zone name="Asia/Brunei" value="STD-8" />
|
||||
<zone name="Asia/Calcutta" value="IST-5:30" />
|
||||
<zone name="Asia/Chita" value="STD-9" />
|
||||
<zone name="Asia/Choibalsan" value="STD-8" />
|
||||
<zone name="Asia/Chongqing" value="CST-8" />
|
||||
<zone name="Asia/Chungking" value="CST-8" />
|
||||
<zone name="Asia/Colombo" value="STD-5:30" />
|
||||
<zone name="Asia/Dacca" value="STD-6" />
|
||||
<zone name="Asia/Damascus" value="STD-3" />
|
||||
<zone name="Asia/Dhaka" value="STD-6" />
|
||||
<zone name="Asia/Dili" value="STD-9" />
|
||||
<zone name="Asia/Dubai" value="STD-4" />
|
||||
<zone name="Asia/Dushanbe" value="STD-5" />
|
||||
<zone name="Asia/Famagusta" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Asia/Gaza" value="EET-2EEST,M3.4.4/50,M10.4.4/50" />
|
||||
<zone name="Asia/Harbin" value="CST-8" />
|
||||
<zone name="Asia/Hebron" value="EET-2EEST,M3.4.4/50,M10.4.4/50" />
|
||||
<zone name="Asia/Ho_Chi_Minh" value="STD-7" />
|
||||
<zone name="Asia/Hong_Kong" value="HKT-8" />
|
||||
<zone name="Asia/Hovd" value="STD-7" />
|
||||
<zone name="Asia/Irkutsk" value="STD-8" />
|
||||
<zone name="Asia/Istanbul" value="STD-3" />
|
||||
<zone name="Asia/Jakarta" value="WIB-7" />
|
||||
<zone name="Asia/Jayapura" value="WIT-9" />
|
||||
<zone name="Asia/Jerusalem" value="IST-2IDT,M3.4.4/26,M10.5.0" />
|
||||
<zone name="Asia/Kabul" value="STD-4:30" />
|
||||
<zone name="Asia/Kamchatka" value="STD-12" />
|
||||
<zone name="Asia/Karachi" value="PKT-5" />
|
||||
<zone name="Asia/Kashgar" value="STD-6" />
|
||||
<zone name="Asia/Kathmandu" value="STD-5:45" />
|
||||
<zone name="Asia/Katmandu" value="STD-5:45" />
|
||||
<zone name="Asia/Khandyga" value="STD-9" />
|
||||
<zone name="Asia/Kolkata" value="IST-5:30" />
|
||||
<zone name="Asia/Krasnoyarsk" value="STD-7" />
|
||||
<zone name="Asia/Kuala_Lumpur" value="STD-8" />
|
||||
<zone name="Asia/Kuching" value="STD-8" />
|
||||
<zone name="Asia/Kuwait" value="STD-3" />
|
||||
<zone name="Asia/Macao" value="CST-8" />
|
||||
<zone name="Asia/Macau" value="CST-8" />
|
||||
<zone name="Asia/Magadan" value="STD-11" />
|
||||
<zone name="Asia/Makassar" value="WITA-8" />
|
||||
<zone name="Asia/Manila" value="PST-8" />
|
||||
<zone name="Asia/Muscat" value="STD-4" />
|
||||
<zone name="Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Asia/Novokuznetsk" value="STD-7" />
|
||||
<zone name="Asia/Novosibirsk" value="STD-7" />
|
||||
<zone name="Asia/Omsk" value="STD-6" />
|
||||
<zone name="Asia/Oral" value="STD-5" />
|
||||
<zone name="Asia/Phnom_Penh" value="STD-7" />
|
||||
<zone name="Asia/Pontianak" value="WIB-7" />
|
||||
<zone name="Asia/Pyongyang" value="KST-9" />
|
||||
<zone name="Asia/Qatar" value="STD-3" />
|
||||
<zone name="Asia/Qostanay" value="STD-6" />
|
||||
<zone name="Asia/Qyzylorda" value="STD-5" />
|
||||
<zone name="Asia/Rangoon" value="STD-6:30" />
|
||||
<zone name="Asia/Riyadh" value="STD-3" />
|
||||
<zone name="Asia/Saigon" value="STD-7" />
|
||||
<zone name="Asia/Sakhalin" value="STD-11" />
|
||||
<zone name="Asia/Samarkand" value="STD-5" />
|
||||
<zone name="Asia/Seoul" value="KST-9" />
|
||||
<zone name="Asia/Shanghai" value="CST-8" />
|
||||
<zone name="Asia/Singapore" value="STD-8" />
|
||||
<zone name="Asia/Srednekolymsk" value="STD-11" />
|
||||
<zone name="Asia/Taipei" value="CST-8" />
|
||||
<zone name="Asia/Tashkent" value="STD-5" />
|
||||
<zone name="Asia/Tbilisi" value="STD-4" />
|
||||
<zone name="Asia/Tehran" value="STD-3:30" />
|
||||
<zone name="Asia/Tel_Aviv" value="IST-2IDT,M3.4.4/26,M10.5.0" />
|
||||
<zone name="Asia/Thimbu" value="STD-6" />
|
||||
<zone name="Asia/Thimphu" value="STD-6" />
|
||||
<zone name="Asia/Tokyo" value="JST-9" />
|
||||
<zone name="Asia/Tomsk" value="STD-7" />
|
||||
<zone name="Asia/Ujung_Pandang" value="WITA-8" />
|
||||
<zone name="Asia/Ulaanbaatar" value="STD-8" />
|
||||
<zone name="Asia/Ulan_Bator" value="STD-8" />
|
||||
<zone name="Asia/Urumqi" value="STD-6" />
|
||||
<zone name="Asia/Ust-Nera" value="STD-10" />
|
||||
<zone name="Asia/Vientiane" value="STD-7" />
|
||||
<zone name="Asia/Vladivostok" value="STD-10" />
|
||||
<zone name="Asia/Yakutsk" value="STD-9" />
|
||||
<zone name="Asia/Yangon" value="STD-6:30" />
|
||||
<zone name="Asia/Yekaterinburg" value="STD-5" />
|
||||
<zone name="Asia/Yerevan" value="STD-4" />
|
||||
|
||||
<zone name="Atlantic/Azores" value="STD1DST,M3.5.0/0,M10.5.0/1" />
|
||||
<zone name="Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Atlantic/Cape_Verde" value="STD1" />
|
||||
<zone name="Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Atlantic/Reykjavik" value="GMT0" />
|
||||
<zone name="Atlantic/South_Georgia" value="STD2" />
|
||||
<zone name="Atlantic/St_Helena" value="GMT0" />
|
||||
<zone name="Atlantic/Stanley" value="STD3" />
|
||||
|
||||
<zone name="Australia/ACT" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Adelaide" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Brisbane" value="AEST-10" />
|
||||
<zone name="Australia/Broken_Hill" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Canberra" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Currie" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Darwin" value="ACST-9:30" />
|
||||
<zone name="Australia/Eucla" value="STD-8:45" />
|
||||
<zone name="Australia/Hobart" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/LHI" value="STD-10:30DST-11,M10.1.0,M4.1.0" />
|
||||
<zone name="Australia/Lindeman" value="AEST-10" />
|
||||
<zone name="Australia/Lord_Howe" value="STD-10:30DST-11,M10.1.0,M4.1.0" />
|
||||
<zone name="Australia/Melbourne" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/NSW" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/North" value="ACST-9:30" />
|
||||
<zone name="Australia/Perth" value="AWST-8" />
|
||||
<zone name="Australia/Queensland" value="AEST-10" />
|
||||
<zone name="Australia/South" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Sydney" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Tasmania" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/Victoria" value="AEST-10AEDT,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Australia/West" value="AWST-8" />
|
||||
<zone name="Australia/Yancowinna" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" />
|
||||
|
||||
<zone name="Brazil/Acre" value="STD5" />
|
||||
<zone name="Brazil/DeNoronha" value="STD2" />
|
||||
<zone name="Brazil/East" value="STD3" />
|
||||
<zone name="Brazil/West" value="STD4" />
|
||||
|
||||
<zone name="CET" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
|
||||
<zone name="CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
|
||||
<zone name="Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" />
|
||||
<zone name="Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" />
|
||||
<zone name="Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="Canada/Saskatchewan" value="CST6" />
|
||||
<zone name="Canada/Yukon" value="MST7" />
|
||||
|
||||
<zone name="Chile/Continental" value="STD4DST,M9.1.6/24,M4.1.6/24" />
|
||||
<zone name="Chile/EasterIsland" value="STD6DST,M9.1.6/22,M4.1.6/22" />
|
||||
|
||||
<zone name="Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" />
|
||||
|
||||
<zone name="EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
|
||||
<zone name="EST" value="EST5" />
|
||||
|
||||
<zone name="EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
|
||||
<zone name="Egypt" value="EET-2EEST,M4.5.5/0,M10.5.4/24" />
|
||||
|
||||
<zone name="Eire" value="IST-1GMT0,M10.5.0,M3.5.0/1" />
|
||||
|
||||
<zone name="Etc/GMT" value="GMT0" />
|
||||
<zone name="Etc/GMT+0" value="GMT0" />
|
||||
<zone name="Etc/GMT+1" value="GMT1" />
|
||||
<zone name="Etc/GMT+10" value="GMT10" />
|
||||
<zone name="Etc/GMT+11" value="GMT11" />
|
||||
<zone name="Etc/GMT+12" value="GMT12" />
|
||||
<zone name="Etc/GMT+2" value="GMT2" />
|
||||
<zone name="Etc/GMT+3" value="GMT3" />
|
||||
<zone name="Etc/GMT+4" value="GMT4" />
|
||||
<zone name="Etc/GMT+5" value="GMT5" />
|
||||
<zone name="Etc/GMT+6" value="GMT6" />
|
||||
<zone name="Etc/GMT+7" value="GMT7" />
|
||||
<zone name="Etc/GMT+8" value="GMT8" />
|
||||
<zone name="Etc/GMT+9" value="GMT9" />
|
||||
<zone name="Etc/GMT-0" value="GMT0" />
|
||||
<zone name="Etc/GMT-1" value="GMT-1" />
|
||||
<zone name="Etc/GMT-10" value="GMT-10" />
|
||||
<zone name="Etc/GMT-11" value="GMT-11" />
|
||||
<zone name="Etc/GMT-12" value="GMT-12" />
|
||||
<zone name="Etc/GMT-13" value="GMT-13" />
|
||||
<zone name="Etc/GMT-14" value="GMT-14" />
|
||||
<zone name="Etc/GMT-2" value="GMT-2" />
|
||||
<zone name="Etc/GMT-3" value="GMT-3" />
|
||||
<zone name="Etc/GMT-4" value="GMT-4" />
|
||||
<zone name="Etc/GMT-5" value="GMT-5" />
|
||||
<zone name="Etc/GMT-6" value="GMT-6" />
|
||||
<zone name="Etc/GMT-7" value="GMT-7" />
|
||||
<zone name="Etc/GMT-8" value="GMT-8" />
|
||||
<zone name="Etc/GMT-9" value="GMT-9" />
|
||||
<zone name="Etc/GMT0" value="GMT0" />
|
||||
<zone name="Etc/Greenwich" value="GMT0" />
|
||||
<zone name="Etc/UCT" value="UTC0" />
|
||||
<zone name="Etc/UTC" value="UTC0" />
|
||||
<zone name="Etc/Universal" value="UTC0" />
|
||||
<zone name="Etc/Zulu" value="UTC0" />
|
||||
|
||||
<zone name="Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Astrakhan" value="STD-4" />
|
||||
<zone name="Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Chisinau" value="EET-2EEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Dublin" value="IST-1GMT0,M10.5.0,M3.5.0/1" />
|
||||
<zone name="Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Europe/Istanbul" value="STD-3" />
|
||||
<zone name="Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Europe/Kaliningrad" value="EET-2" />
|
||||
<zone name="Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Kirov" value="MSK-3" />
|
||||
<zone name="Europe/Kyiv" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
<zone name="Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Minsk" value="STD-3" />
|
||||
<zone name="Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Moscow" value="MSK-3" />
|
||||
<zone name="Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Samara" value="STD-4" />
|
||||
<zone name="Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Saratov" value="STD-4" />
|
||||
<zone name="Europe/Simferopol" value="MSK-3" />
|
||||
<zone name="Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Tiraspol" value="EET-2EEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Ulyanovsk" value="STD-4" />
|
||||
<zone name="Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Volgograd" value="MSK-3" />
|
||||
<zone name="Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
<zone name="Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" />
|
||||
<zone name="Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
|
||||
<zone name="Factory" value="STD0" />
|
||||
|
||||
<zone name="GB" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
|
||||
<zone name="GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" />
|
||||
|
||||
<zone name="GMT" value="GMT0" />
|
||||
|
||||
<zone name="GMT+0" value="GMT0" />
|
||||
|
||||
<zone name="GMT-0" value="GMT0" />
|
||||
|
||||
<zone name="GMT0" value="GMT0" />
|
||||
|
||||
<zone name="Greenwich" value="GMT0" />
|
||||
|
||||
<zone name="HST" value="HST10" />
|
||||
|
||||
<zone name="Hongkong" value="HKT-8" />
|
||||
|
||||
<zone name="Iceland" value="GMT0" />
|
||||
|
||||
<zone name="Indian/Antananarivo" value="EAT-3" />
|
||||
<zone name="Indian/Chagos" value="STD-6" />
|
||||
<zone name="Indian/Christmas" value="STD-7" />
|
||||
<zone name="Indian/Cocos" value="STD-6:30" />
|
||||
<zone name="Indian/Comoro" value="EAT-3" />
|
||||
<zone name="Indian/Kerguelen" value="STD-5" />
|
||||
<zone name="Indian/Mahe" value="STD-4" />
|
||||
<zone name="Indian/Maldives" value="STD-5" />
|
||||
<zone name="Indian/Mauritius" value="STD-4" />
|
||||
<zone name="Indian/Mayotte" value="EAT-3" />
|
||||
<zone name="Indian/Reunion" value="STD-4" />
|
||||
|
||||
<zone name="Iran" value="STD-3:30" />
|
||||
|
||||
<zone name="Israel" value="IST-2IDT,M3.4.4/26,M10.5.0" />
|
||||
|
||||
<zone name="Jamaica" value="EST5" />
|
||||
|
||||
<zone name="Japan" value="JST-9" />
|
||||
|
||||
<zone name="Kwajalein" value="STD-12" />
|
||||
|
||||
<zone name="Libya" value="EET-2" />
|
||||
|
||||
<zone name="MET" value="MET-1MEST,M3.5.0,M10.5.0/3" />
|
||||
|
||||
<zone name="MST" value="MST7" />
|
||||
|
||||
<zone name="MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
|
||||
<zone name="Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="Mexico/BajaSur" value="MST7" />
|
||||
<zone name="Mexico/General" value="CST6" />
|
||||
|
||||
<zone name="NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
|
||||
|
||||
<zone name="NZ-CHAT" value="STD-12:45DST,M9.5.0/2:45,M4.1.0/3:45" />
|
||||
|
||||
<zone name="Navajo" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
|
||||
<zone name="PRC" value="CST-8" />
|
||||
|
||||
<zone name="PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
|
||||
<zone name="Pacific/Apia" value="STD-13" />
|
||||
<zone name="Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" />
|
||||
<zone name="Pacific/Bougainville" value="STD-11" />
|
||||
<zone name="Pacific/Chatham" value="STD-12:45DST,M9.5.0/2:45,M4.1.0/3:45" />
|
||||
<zone name="Pacific/Chuuk" value="STD-10" />
|
||||
<zone name="Pacific/Easter" value="STD6DST,M9.1.6/22,M4.1.6/22" />
|
||||
<zone name="Pacific/Efate" value="STD-11" />
|
||||
<zone name="Pacific/Enderbury" value="STD-13" />
|
||||
<zone name="Pacific/Fakaofo" value="STD-13" />
|
||||
<zone name="Pacific/Fiji" value="STD-12" />
|
||||
<zone name="Pacific/Funafuti" value="STD-12" />
|
||||
<zone name="Pacific/Galapagos" value="STD6" />
|
||||
<zone name="Pacific/Gambier" value="STD9" />
|
||||
<zone name="Pacific/Guadalcanal" value="STD-11" />
|
||||
<zone name="Pacific/Guam" value="ChST-10" />
|
||||
<zone name="Pacific/Honolulu" value="HST10" />
|
||||
<zone name="Pacific/Johnston" value="HST10" />
|
||||
<zone name="Pacific/Kanton" value="STD-13" />
|
||||
<zone name="Pacific/Kiritimati" value="STD-14" />
|
||||
<zone name="Pacific/Kosrae" value="STD-11" />
|
||||
<zone name="Pacific/Kwajalein" value="STD-12" />
|
||||
<zone name="Pacific/Majuro" value="STD-12" />
|
||||
<zone name="Pacific/Marquesas" value="STD9:30" />
|
||||
<zone name="Pacific/Midway" value="SST11" />
|
||||
<zone name="Pacific/Nauru" value="STD-12" />
|
||||
<zone name="Pacific/Niue" value="STD11" />
|
||||
<zone name="Pacific/Norfolk" value="STD-11DST,M10.1.0,M4.1.0/3" />
|
||||
<zone name="Pacific/Noumea" value="STD-11" />
|
||||
<zone name="Pacific/Pago_Pago" value="SST11" />
|
||||
<zone name="Pacific/Palau" value="STD-9" />
|
||||
<zone name="Pacific/Pitcairn" value="STD8" />
|
||||
<zone name="Pacific/Pohnpei" value="STD-11" />
|
||||
<zone name="Pacific/Ponape" value="STD-11" />
|
||||
<zone name="Pacific/Port_Moresby" value="STD-10" />
|
||||
<zone name="Pacific/Rarotonga" value="STD10" />
|
||||
<zone name="Pacific/Saipan" value="ChST-10" />
|
||||
<zone name="Pacific/Samoa" value="SST11" />
|
||||
<zone name="Pacific/Tahiti" value="STD10" />
|
||||
<zone name="Pacific/Tarawa" value="STD-12" />
|
||||
<zone name="Pacific/Tongatapu" value="STD-13" />
|
||||
<zone name="Pacific/Truk" value="STD-10" />
|
||||
<zone name="Pacific/Wake" value="STD-12" />
|
||||
<zone name="Pacific/Wallis" value="STD-12" />
|
||||
<zone name="Pacific/Yap" value="STD-10" />
|
||||
|
||||
<zone name="Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" />
|
||||
|
||||
<zone name="Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
|
||||
<zone name="ROC" value="CST-8" />
|
||||
|
||||
<zone name="ROK" value="KST-9" />
|
||||
|
||||
<zone name="Singapore" value="STD-8" />
|
||||
|
||||
<zone name="Turkey" value="STD-3" />
|
||||
|
||||
<zone name="UCT" value="UTC0" />
|
||||
|
||||
<zone name="US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Aleutian" value="HST10HDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Arizona" value="MST7" />
|
||||
<zone name="US/Central" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Hawaii" value="HST10" />
|
||||
<zone name="US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" />
|
||||
<zone name="US/Samoa" value="SST11" />
|
||||
|
||||
<zone name="UTC" value="UTC0" />
|
||||
|
||||
<zone name="Universal" value="UTC0" />
|
||||
|
||||
<zone name="W-SU" value="MSK-3" />
|
||||
|
||||
<zone name="WET" value="WET0WEST,M3.5.0/1,M10.5.0" />
|
||||
|
||||
<zone name="Zulu" value="UTC0" />
|
||||
</timezones>
|
||||
</configuration>
|
3366
conf/rayo/cacert.pem
3366
conf/rayo/cacert.pem
File diff suppressed because it is too large
Load Diff
|
@ -1,36 +0,0 @@
|
|||
<include>
|
||||
<context name="public">
|
||||
|
||||
<extension name="unloop">
|
||||
<condition field="${unroll_loops}" expression="^true$"/>
|
||||
<condition field="${sip_looped_call}" expression="^true$">
|
||||
<action application="deflect" data="${destination_number}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
<!--
|
||||
Tag anything pass thru here as an outside_call so you can make sure not
|
||||
to create any routing loops based on the conditions that it came from
|
||||
the outside of the switch.
|
||||
-->
|
||||
<extension name="outside_call" continue="true">
|
||||
<condition>
|
||||
<action application="set" data="outside_call=true"/>
|
||||
<action application="export" data="RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="call_debug" continue="true">
|
||||
<condition field="${call_debug}" expression="^true$" break="never">
|
||||
<action application="info"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="adhearsion">
|
||||
<condition>
|
||||
<action application="rayo" data=""/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
</context>
|
||||
</include>
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
<!--
|
||||
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
|
||||
|
||||
FreeSWITCH works off the concept of users and domains just like email.
|
||||
You have users that are in domains for example 1000@domain.com.
|
||||
|
||||
When freeswitch gets a register packet it looks for the user in the directory
|
||||
based on the from or to domain in the packet depending on how your sofia profile
|
||||
is configured. Out of the box the default domain will be the IP address of the
|
||||
machine running FreeSWITCH. This IP can be found by typing "sofia status" at the
|
||||
CLI. You will register your phones to the IP and not the hostname by default.
|
||||
If you wish to register using the domain please open vars.xml in the root conf
|
||||
directory and set the default domain to the hostname you desire. Then you would
|
||||
use the domain name in the client instead of the IP address to register
|
||||
with FreeSWITCH.
|
||||
|
||||
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
|
||||
-->
|
||||
|
||||
<include>
|
||||
<!--the domain or ip (the right hand side of the @ in the addr-->
|
||||
<domain name="$${domain}">
|
||||
<params>
|
||||
<param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})}"/>
|
||||
</params>
|
||||
|
||||
<variables>
|
||||
</variables>
|
||||
|
||||
<groups>
|
||||
<group name="default">
|
||||
<users>
|
||||
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
|
||||
</users>
|
||||
</group>
|
||||
</groups>
|
||||
|
||||
</domain>
|
||||
</include>
|
|
@ -1,21 +0,0 @@
|
|||
<include>
|
||||
<user id="usera">
|
||||
<!-- Outbound Registrations Related to this user -->
|
||||
<gateways>
|
||||
</gateways>
|
||||
<params>
|
||||
<!-- omit password for authless registration -->
|
||||
<param name="password" value="1"/>
|
||||
</params>
|
||||
<variables>
|
||||
<!--all variables here will be set on all inbound calls that originate from this user -->
|
||||
<variable name="user_context" value="public"/>
|
||||
<variable name="effective_caller_id_name" value="User A"/>
|
||||
<variable name="effective_caller_id_number" value="9009095333"/>
|
||||
</variables>
|
||||
|
||||
<vcard>
|
||||
<!-- insert optional compliant vcard xml here-->
|
||||
</vcard>
|
||||
</user>
|
||||
</include>
|
|
@ -1,21 +0,0 @@
|
|||
<include>
|
||||
<user id="userb">
|
||||
<!-- Outbound Registrations Related to this user -->
|
||||
<gateways>
|
||||
</gateways>
|
||||
<params>
|
||||
<!-- omit password for authless registration -->
|
||||
<param name="password" value="1"/>
|
||||
</params>
|
||||
<variables>
|
||||
<!--all variables here will be set on all inbound calls that originate from this user -->
|
||||
<variable name="user_context" value="public"/>
|
||||
<variable name="effective_caller_id_name" value="User B"/>
|
||||
<variable name="effective_caller_id_number" value="9009093733"/>
|
||||
</variables>
|
||||
|
||||
<vcard>
|
||||
<!-- insert optional compliant vcard xml here-->
|
||||
</vcard>
|
||||
</user>
|
||||
</include>
|
|
@ -1,21 +0,0 @@
|
|||
<include>
|
||||
<user id="userc">
|
||||
<!-- Outbound Registrations Related to this user -->
|
||||
<gateways>
|
||||
</gateways>
|
||||
<params>
|
||||
<!-- omit password for authless registration -->
|
||||
<param name="password" value="1"/>
|
||||
</params>
|
||||
<variables>
|
||||
<!--all variables here will be set on all inbound calls that originate from this user -->
|
||||
<variable name="user_context" value="public"/>
|
||||
<variable name="effective_caller_id_name" value="User C"/>
|
||||
<variable name="effective_caller_id_number" value="8006492568"/>
|
||||
</variables>
|
||||
|
||||
<vcard>
|
||||
<!-- insert optional compliant vcard xml here-->
|
||||
</vcard>
|
||||
</user>
|
||||
</include>
|
|
@ -1,21 +0,0 @@
|
|||
<include>
|
||||
<user id="userd">
|
||||
<!-- Outbound Registrations Related to this user -->
|
||||
<gateways>
|
||||
</gateways>
|
||||
<params>
|
||||
<!-- omit password for authless registration -->
|
||||
<param name="password" value="1"/>
|
||||
</params>
|
||||
<variables>
|
||||
<!--all variables here will be set on all inbound calls that originate from this user -->
|
||||
<variable name="user_context" value="public"/>
|
||||
<variable name="effective_caller_id_name" value="Jenny"/>
|
||||
<variable name="effective_caller_id_number" value="2128675309"/>
|
||||
</variables>
|
||||
|
||||
<vcard>
|
||||
<!-- insert optional compliant vcard xml here-->
|
||||
</vcard>
|
||||
</user>
|
||||
</include>
|
|
@ -1,69 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
|
||||
|
||||
This is the FreeSWITCH default config. Everything you see before you now traverses
|
||||
down into all the directories including files which include more files. The default
|
||||
config comes out of the box already working in most situations as a PBX. This will
|
||||
allow you to get started testing and playing with various things in FreeSWITCH.
|
||||
|
||||
Before you start to modify this default please visit this wiki page:
|
||||
|
||||
http://wiki.freeswitch.org/wiki/Getting_Started_Guide#Some_stuff_to_try_out.21
|
||||
|
||||
If all else fails you can read our FAQ located at:
|
||||
|
||||
http://wiki.freeswitch.org/wiki/FreeSwitch_FAQ
|
||||
|
||||
NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE
|
||||
-->
|
||||
<document type="freeswitch/xml">
|
||||
<!--#comment
|
||||
All comments starting with #command will be preprocessed and never sent to the xml parser
|
||||
Valid instructions:
|
||||
#include ==> Include another file to this exact point
|
||||
(partial xml should be encased in <include></include> tags)
|
||||
#set ==> Set a global variable (can be expanded during preprocessing with $$ variables)
|
||||
(note the double $$ which denotes preprocessor variables)
|
||||
#comment ==> A general comment such as this
|
||||
|
||||
The preprocessor will compile the full xml document to ${prefix}/log/freeswitch.xml.fsxml
|
||||
Don't modify it while freeswitch is running cos it is mem mapped in most cases =D
|
||||
|
||||
The same can be achieved with the <X-PRE-PROCESS> tag where the attrs 'cmd' and 'data' are
|
||||
parsed in the same way.
|
||||
-->
|
||||
<!--#comment
|
||||
vars.xml contains all the #set directives for the preprocessor.
|
||||
-->
|
||||
<X-PRE-PROCESS cmd="include" data="vars.xml"/>
|
||||
|
||||
<section name="configuration" description="Various Configuration">
|
||||
<X-PRE-PROCESS cmd="include" data="autoload_configs/*.xml"/>
|
||||
</section>
|
||||
|
||||
<section name="dialplan" description="Regex/XML Dialplan">
|
||||
<X-PRE-PROCESS cmd="include" data="dialplan/*.xml"/>
|
||||
</section>
|
||||
|
||||
<!-- mod_dingaling is reliant on the vcard data in the "directory" section. -->
|
||||
<!-- mod_sofia is reliant on the user data for authorization -->
|
||||
<section name="directory" description="User Directory">
|
||||
<X-PRE-PROCESS cmd="include" data="directory/*.xml"/>
|
||||
</section>
|
||||
|
||||
<!-- languages section (under development still) -->
|
||||
<section name="languages" description="Language Management">
|
||||
<X-PRE-PROCESS cmd="include" data="lang/de/*.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="lang/fr/*.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="lang/he/*.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="lang/es/es_ES.xml"/>
|
||||
<X-NO-PRE-PROCESS cmd="include" data="lang/es/es_MX.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="lang/pt/pt_BR.xml"/>
|
||||
<X-NO-PRE-PROCESS cmd="include" data="lang/pt/pt_PT.xml"/>
|
||||
<X-NO-PRE-PROCESS cmd="include" data="lang/sv/*.xml"/>
|
||||
</section>
|
||||
|
||||
</document>
|
|
@ -1,22 +0,0 @@
|
|||
<include>
|
||||
<language name="de" sound-prefix="/snds" tts-engine="cepstral" tts-voice="david">
|
||||
<phrases>
|
||||
<macros>
|
||||
<X-PRE-PROCESS cmd="include" data="demo/demo.xml"/>
|
||||
<!--voicemail_de_tts is purely implemented with tts, we need a files based implementation too -->
|
||||
<X-PRE-PROCESS cmd="include" data="vm/tts.xml"/>
|
||||
</macros>
|
||||
</phrases>
|
||||
</language>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,82 +0,0 @@
|
|||
<include>
|
||||
<macro name="msgcount">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="execute" data="sleep(1000)"/>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<!-- or -->
|
||||
<!--<action function="speak-text" data="Sie haben $1 Nachrichten"/>-->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="saydate">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="timespec">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="ip-addr">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="iterated" type="ip_address"/>
|
||||
<action function="say" data="$1" method="pronounced" type="ip_address"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell-phonetic">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="tts-timeleft">
|
||||
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
|
||||
<!-- If the function "break" is encountered all parsing will cease -->
|
||||
<input pattern="(\d+):(\d+)">
|
||||
<match>
|
||||
<action function="speak-text" data="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/>
|
||||
<action function="break"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="Die Eingabe war ungültig."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input pattern="(\d+) min (\d+) sek">
|
||||
<match>
|
||||
<action function="speak-text" data="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="Die Eingabe war ungültig."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,413 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-abort.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^(1):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action application="log" data="INFO $1 $2"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items" gender="feminine"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items" gender="feminine"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To listen to new messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_new.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- To listen to saved messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_saved.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- For advanced options -->
|
||||
<action function="play-file" data="voicemail/vm-advanced.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- To exit -->
|
||||
<action function="play-file" data="voicemail/vm-to_exit.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To record a greeting -->
|
||||
<action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- To choose greeting -->
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- To record your name -->
|
||||
<action function="play-file" data="voicemail/vm-record_name2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- To change password -->
|
||||
<action function="play-file" data="voicemail/vm-change_password.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<!-- To return to main menu -->
|
||||
<action function="play-file" data="voicemail/vm-main_menu.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-continue.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-send_message_now.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-greeting.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-selected.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-person.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-not_available.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message_number.wav"/>
|
||||
<action application="log" data="INFO $1 $2"/>
|
||||
<action function="say" data="$2" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-too-small.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action application="log" data="INFO $1"/>
|
||||
<action function="say" data="$1" method="counted" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_disk_quota_exceeded">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_announce_ext">
|
||||
<input pattern="^([^\:]+):(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_full">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_empty">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,224 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Bitte geben Sie Ihren Benutzernamen ein, gefolgt von $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Bitte geben Sie Ihr Passwort ein, gefolgt von $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Falsche Benutzerdaten."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Willkommen in Ihrem Postfach."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Auf Wiedersehen."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Zu viele Fehlversuche."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^1:(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Sie haben 1 $2 Nachricht im Ordner ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([0,2-9]+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Sie haben $1 $2 Nachrichten im Ordner ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Um neue Nachrichten zu hören, drücken Sie $1. Um gespeicherte Nachrichten zu hören, drücken Sie $2, Für erweiterte Optionen, drücken Sie $3. Zum beenden drücken Sie $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Um eine Ansage aufzunehmen, drücken Sie $1. Um eine Ansage auszuwählen, drücken Sie $2. Um ihren Namen aufzunehmen, drücken Sie $3. Um zum Hauptmenü zurückzukehren, drücken Sie $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Sprechen Sie Ihren Namen nach dem Ton, drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Um die Aufzeichnung anzuhören, drücken Sie $1. Um die Aufzeichnung zu speichern, drücken Sie $2. Für eine erneute Aufnahme drücken Sie $3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Drücken Sie $1 um diese Nachricht als wichtig zu markieren. Um fortzufahren drücken Sie $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Drücken Sie $1 um die Nachricht erneut zu hören. Um die Nachricht zu speichern, drücken Sie $2. Zum löschen der Nachricht drücken Sie $3. Für die Weiterleitung als Email, drücken Sie $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Wählen Sie eine Ansage zwischen 1 und 3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Ungültige Eingabe."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Zeichnen Sie Ihre Ansage nach dem Ton auf. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Sprechen Sie nach dem Ton. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Ansage $1 ausgewählt."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 ist nicht verfügbar."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 Nachricht Nummer $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Nachricht $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$strftime($1|%A, %B %d %Y, %I %M %p)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,156 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="demo_ivr_count">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- string together several existing sound files to create one long greeting -->
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
|
||||
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
|
||||
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
|
||||
<action function="play-file" data="silence_stream://1500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Register for ClueCon -->
|
||||
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 6: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/6.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_main_menu_short" pause="100">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="silence_stream://1000"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
|
||||
<macro name="demo_ivr_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_sub_menu_short">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,82 +0,0 @@
|
|||
<include>
|
||||
<macro name="msgcount">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="execute" data="sleep(1000)"/>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<!-- or -->
|
||||
<!--<action function="speak-text" data="you have $1 messages"/>-->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="saydate">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="timespec">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="ip-addr">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="iterated" type="ip_address"/>
|
||||
<action function="say" data="$1" method="pronounced" type="ip_address"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell-phonetic">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="tts-timeleft">
|
||||
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
|
||||
<!-- If the function "break" is encountered all parsing will cease -->
|
||||
<input pattern="(\d+):(\d+)">
|
||||
<match>
|
||||
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
|
||||
<action function="break"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="That input was invalid."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input pattern="(\d+) min (\d+) sec">
|
||||
<match>
|
||||
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="That input was invalid."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,35 +0,0 @@
|
|||
<include>
|
||||
<macro name="funny_prompts" pause="750">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-wakey_wakey_sunshine.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-no_no_no.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-did_you_mean_to_press_key.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-seriously_mean_to_press_key.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-oh_whatever.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-one_more_mistake.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-congratulations_you_pressed_star.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-engineers_busy_assisting_other_sales.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-message_self_destruct.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-all_your_call_are_belong_to_us.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-love_those_touch_tones.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-yes_we_have_no_bananas.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-dude_you_suck.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-on_hold_indefinitely.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-youre_doing_it_wrong.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-were_asterisk_free.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-douche_telecom.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-asterisk_like_syphilis.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-freeguipy.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-terribly_wrong_awkward.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-it_was_that_bug.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-concentrate.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-founder_of_freesource.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-cold_foolish.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-trollover_minutes.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-yuno_silent_drill.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-beacuase.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
</include>
|
|
@ -1,171 +0,0 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
|
||||
<macro name="new_demo_ivr_main_menu" pause="100"> <!-- See conf/ivr_menus/ivr.conf.xml for an example on how to use this macro in an IVR -->
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="silence_stream://500"/>
|
||||
|
||||
<!-- Menu option 1: For information about FreeSWITCH... -->
|
||||
<action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
|
||||
<action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: To hear about ClueCon -->
|
||||
<action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: For other options -->
|
||||
<action function="play-file" data="ivr/ivr-for_other_options.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as new_demo_ivr_main_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="new_demo_ivr_main_menu_short" pause="100">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option 1: For information about FreeSWITCH... -->
|
||||
<action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
|
||||
<action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: To hear about ClueCon -->
|
||||
<action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: For other options -->
|
||||
<action function="play-file" data="ivr/ivr-for_other_options.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- More information about FreeSWITCH... -->
|
||||
<macro name="learn_about_freeswitch_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Information about FreeSWITCH and OSTAG... -->
|
||||
<action function="play-file" data="misc-freeswitch_is_state_of_the_art.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-it_is_stable_scalable_extensible.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-free_to_download.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-freeswitch_sponsored_by_ostag.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-ostag_learn_more.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
|
||||
<!-- Menu option 9: Repeat this information -->
|
||||
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- More information about FreeSWITCH Solutions... -->
|
||||
<macro name="learn_about_freeswitch_solutions_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Information about FreeSWITCH Solutions... -->
|
||||
<action function="play-file" data="[[sounds from tony/brian]]"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="[[sounds from tony/brian]]"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="[[sounds from tony/brian]]"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="[[sounds from tony/brian]]"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="[[sounds from tony/brian]]"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
|
||||
<!-- Menu option 9: Repeat this information -->
|
||||
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- More information about ClueCon -->
|
||||
<macro name="learn_about_cluecon_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Information about ClueCon... -->
|
||||
<action function="play-file" data="misc-cluecon_is_premier_conference.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-chicago_each_summer.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-wide_range_of_persons.wav"/>
|
||||
<action function="play-file" data="silence_stream://50"/>
|
||||
<action function="play-file" data="misc-support_open_source_by_attending.wav"/>
|
||||
<action function="play-file" data="silence_stream://500"/>
|
||||
<action function="play-file" data="ivr-register_for_cluecon.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
<action function="play-file" data="silence_stream://500"/>
|
||||
|
||||
<!-- Menu option 9: Repeat this information -->
|
||||
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,130 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-result_match.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-too_many_result.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_more_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-result_number.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-at_extension.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_next.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_prev.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-start_new_search.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,106 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Please enter the first few digit of the person last name"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Please enter the first few digit of the person first name"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="to search by first name, press $2"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="to search by last name, press $2"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="You need to specify a minimum the first $1 letters of the person name, try again."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="Your search match no user on this system, try again."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 result match your search"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Your search returned too many result, please try again"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="No more result"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Result number $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="To select this entry press $1, for the next entry press $2, for the previous entry press $3, to make a new search press $4"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="at extension $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,25 +0,0 @@
|
|||
<include>
|
||||
<language name="en" say-module="en" sound-prefix="$${sound_prefix}" tts-engine="cepstral" tts-voice="callie">
|
||||
<phrases>
|
||||
<macros>
|
||||
<X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
|
||||
<!-- voicemail_en_tts is purely implemented with tts, we have the files based one that is the default. -->
|
||||
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral -->
|
||||
<X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
|
||||
<X-PRE-PROCESS cmd="include" data="ivr/*.xml"/> <!-- IVR and custom phrases go here -->
|
||||
</macros>
|
||||
<X-PRE-PROCESS cmd="include" data="vm/voicemail_ivr.xml"/>
|
||||
</phrases>
|
||||
</language>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,153 +0,0 @@
|
|||
<include>
|
||||
<macro name="queue_position">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-you_are_number.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="ivr/ivr-in_line.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="has_called_conf">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="$1"/>
|
||||
<action function="sleep" data="100"/>
|
||||
<action function="play-file" data="conference/conf-has_joined.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="has_left_conf">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="$1"/>
|
||||
<action function="sleep" data="100"/>
|
||||
<action function="play-file" data="conference/conf-has_left.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="callers_in_conf">
|
||||
<input pattern="^1$" break_on_match="true">
|
||||
<match>
|
||||
<action function="sleep" data="500"/>
|
||||
<!--<action function="play-file" data="ivr/ivr-there_is.wav"/>-->
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
<action function="sleep" data="100"/>
|
||||
<action function="play-file" data="conference/conf-listener_in_conference.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-there_are.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="sleep" data="100"/>
|
||||
<action function="play-file" data="conference/conf-members_in_conference.wav"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-there_are.wav"/>
|
||||
<action function="play-file" data="digits/0.wav"/>
|
||||
<action function="sleep" data="100"/>
|
||||
<action function="play-file" data="conference/conf-members_in_conference.wav"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="enter_dest_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="sleep" data="1000"/>
|
||||
<action function="play-file" data="ivr/ivr-enter_destination_telephone_number.wav"/>
|
||||
<action function="sleep" data="1000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="enter_src_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="sleep" data="1000"/>
|
||||
<action function="play-file" data="ivr/ivr-enter_source_telephone_number.wav"/>
|
||||
<action function="sleep" data="1000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="call_forward_set">
|
||||
<input pattern="^(\d+):(\d+)$">
|
||||
<match>
|
||||
<action function="sleep" data="1000"/>
|
||||
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
|
||||
<action function="sleep" data="400"/>
|
||||
<action function="say" data="$1" method="iterated" type="number"/>
|
||||
<action function="sleep" data="400"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
<action function="sleep" data="1000"/>
|
||||
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
|
||||
<action function="sleep" data="400"/>
|
||||
<action function="say" data="$2" method="iterated" type="number"/>
|
||||
<action function="sleep" data="1000"/>
|
||||
<action function="play-file" data="ivr/ivr-call_forwarding_has_been_set.wav"/>
|
||||
<action function="sleep" data="1500"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="call_forward_cancel">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="sleep" data="1000"/>
|
||||
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
|
||||
<action function="sleep" data="400"/>
|
||||
<action function="say" data="$1" method="iterated" type="number"/>
|
||||
<action function="play-file" data="ivr/ivr-call_forwarding_has_been_cancelled.wav"/>
|
||||
<action function="sleep" data="1500"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="screen_confirm">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-call_from.wav"/>
|
||||
<action function="sleep" data="250"/>
|
||||
<!-- Note, be sure to pass in the full path to the file or else!! -->
|
||||
<action function="play-file" data="$1"/>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_reject.wav"/>
|
||||
<action function="sleep" data="50"/>
|
||||
<action function="play-file" data="ivr/ivr-hang_up.wav"/>
|
||||
<action function="sleep" data="1500"/>
|
||||
<action function="play-file" data="ivr/ivr-call_from.wav"/>
|
||||
<action function="sleep" data="250"/>
|
||||
<action function="play-file" data="$1"/>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_reject.wav"/>
|
||||
<action function="sleep" data="50"/>
|
||||
<action function="play-file" data="ivr/ivr-hang_up.wav"/>
|
||||
<action function="sleep" data="1500"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,441 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_change_pass_success">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-password_has_been_changed.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_change_pass_fail">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-password_not_valid.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-abort.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^(1):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To listen to new messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_new.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To listen to saved messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_saved.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- For advanced options -->
|
||||
<action function="play-file" data="voicemail/vm-advanced.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To exit -->
|
||||
<action function="play-file" data="voicemail/vm-to_exit.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To record a greeting -->
|
||||
<action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To choose greeting -->
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To record your name -->
|
||||
<action function="play-file" data="voicemail/vm-record_name2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To change password -->
|
||||
<action function="play-file" data="voicemail/vm-change_password.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To return to main menu -->
|
||||
<action function="play-file" data="voicemail/vm-main_menu.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-continue.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-send_message_now.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-greeting.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-selected.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-person.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-not_available.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message_number.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^000|^$|^[Aa]non|^[Pp]rivate" break_on_match="true">
|
||||
<match>
|
||||
<!-- add 'anonymous caller' sound here -->
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-this_is_a_call_from.wav"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(500)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-too-small.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="short_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_disk_quota_exceeded">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_announce_ext">
|
||||
<input pattern="^([^\:]+):(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_full">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_empty">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,249 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="please enter your i d, followed by $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="please enter your password, followed by $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="login incorrect."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="welcome to your voicemail."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="goodbye."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="too many failed attempts."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^1:(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="you have 1 $1 message in folder ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="you have $1 $2 messages in folder ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="To listen to new messages, press $1, To listen to saved messages, press $2, For advanced options, press $3, to exit, press $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="To record a greeting, press $1, To choose a greeting, press $2, To record your name, press $3, to change your password, press $5, to return to the main menu, press $5."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="at the tone, please record your name, press any key or stop talking to end the recording."/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="To listen to the recording, press $1, To save the recording, press $2, To re record, press $3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="To mark this message urgent, press $1, To continue, press $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 is not a valid extension."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="enter the extension you wish to forward to, then press $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="To record an announcement, press $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="To listen to the recording again, press $1, To save the recording, press $2, To delete the recording, press $3, to forward the recording to your email, press $4, to call the caller now, press $5, To forward this message to another extension, press $6."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="choose a greeting between 1 and 3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="invalid value."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="record your greeting at the tone, press any key or stop talking to end the recording."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="record your message at the tone, press any key or stop talking to end the recording."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="greeting $1 selected."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 is not available."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 message number $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,417 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macros name="voicemail_ivr">
|
||||
<macro name="press_key">
|
||||
<input pattern="^(.*):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="$2"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="plural_msg">
|
||||
<input pattern="^[1]:(.*):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^.*:(.*):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="$2"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="enter_id">
|
||||
<input pattern="(.+)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="${VM-Key-Terminator}" method="pronounced" type="name_spelled"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="enter_pass">
|
||||
<input pattern="(.+)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="${VM-Key-Terminator}" method="pronounced" type="name_spelled"/>
|
||||
</nomatch>
|
||||
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="fail_auth">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="hello">
|
||||
<input>
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="goodbye">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="abort">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-abort.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="message_count">
|
||||
<input field="${VM-Total-New-Urgent-Messages}" pattern="^(0)$">
|
||||
<nomatch>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="${VM-Total-New-Urgent-Messages}" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-urgent-new.wav"/>
|
||||
<action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-New-Urgent-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input field="${VM-Total-New-Messages}" pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="${VM-Total-New-Messages}" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-new.wav"/>
|
||||
<action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-New-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input field="${VM-Total-Saved-Messages}" pattern="^(0)$">
|
||||
<nomatch>
|
||||
<action function="play-file" data="currency/and.wav"/>
|
||||
<action function="say" data="${VM-Total-Saved-Messages}" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-saved.wav"/>
|
||||
<action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-Saved-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="menu">
|
||||
<input field="${VM-Total-New-Messages}" pattern="^(0)$">
|
||||
<nomatch>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Play-New-Messages}:voicemail/vm-listen_new.wav"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input field="${VM-Total-Saved-Messages}" pattern="^(0)$">
|
||||
<nomatch>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Play-Saved-Messages}:voicemail/vm-listen_saved.wav"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Config-Menu}:voicemail/vm-advanced.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Terminator}:voicemail/vm-to_exit.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="config_menu">
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-Greeting}:voicemail/vm-to_record_greeting.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Choose-Greeting}:voicemail/vm-choose_greeting.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-Name}:voicemail/vm-record_name2.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Change-Password}:voicemail/vm-change_password.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Menu}:voicemail/vm-main_menu.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="record_name">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="forward_ask_prepend">
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Prepend}:voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Forward}:voicemail/vm-send_message_now.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="forward_ask_extension">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<!--<action function="phrase" phrase="play-file" data="voicemail/vm-followed_by.wav"/>-->
|
||||
<!--<action function="say" data="${VM-Key-Terminate}" method="pronounced" type="name_spelled"/>-->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="record_file_check">
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Listen-File}:voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Save-File}:voicemail/vm-save_recording.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-File}:voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="record_urgent_check">
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Urgent}:voicemail/vm-mark-urgent.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Terminator}:voicemail/vm-continue.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="forward_prepend">
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Prepend}:voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Forward}:voicemail/vm-send_message_now.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="invalid_extension">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="listen_file_check">
|
||||
<input>
|
||||
<match>
|
||||
<!--<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Next-Msg}:voicemail/vm-for_next_msg.wav"/>--> <!-- Not existant in callie recordings -->
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Listen-File}:voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Save-File}:voicemail/vm-save_recording.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Delete-File}:voicemail/vm-delete_recording.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Forward}:voicemail/vm-to_forward.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input field="${VM-Message-Email}" pattern="^$">
|
||||
<nomatch>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Email}:voicemail/vm-forward_to_email.wav"/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input>
|
||||
<match>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Callback}:voicemail/vm-return_call.wav"/>
|
||||
<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Forward}:voicemail/vm-to_forward.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="choose_greeting">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="choose_greeting_fail">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="record_greeting">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="record_message">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="greeting_selected">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="${VM-Preference-Greeting-File-Path}"/>
|
||||
<action function="play-file" data="voicemail/vm-greeting.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-selected.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-person.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-not_available.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="say_number">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="say_message_number">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-${VM-Message-Type}.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message_number.wav"/>
|
||||
<action function="say" data="${VM-Message-Number}" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
|
||||
<macro name="ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-too-small.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(undeleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="short_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="say_date_event">
|
||||
<input>
|
||||
<match>
|
||||
<action function="say" data="${VM-Message-Received-Epoch}" method="pronounced" type="short_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="play_message">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="${VM-Message-File-Path}"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="play_recording">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="${VM-Record-File-Path}"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="disk_quota_exceeded">
|
||||
<input>
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
</macros>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,71 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="msgcount">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="execute" data="sleep(1000)"/>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<!-- or -->
|
||||
<!--<action function="speak-text" data="Usted tiene $1 mensajes"/>-->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="saydate">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="timespec">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="ip-addr">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="iterated" type="ip_address"/>
|
||||
<action function="say" data="$1" method="pronounced" type="ip_address"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell-phonetic">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="tts-timeleft">
|
||||
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
|
||||
<!-- If the function "break" is encountered all parsing will cease -->
|
||||
<input pattern="(\d+):(\d+)">
|
||||
<match>
|
||||
<action function="speak-text" data="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/>
|
||||
<action function="break"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="Esa fue una entrada inválida."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input pattern="(\d+) min (\d+) sec">
|
||||
<match>
|
||||
<action function="speak-text" data="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="Esa fue una entrada inválida."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,71 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="msgcount">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="execute" data="sleep(1000)"/>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<!-- or -->
|
||||
<!--<action function="speak-text" data="Usted tiene $1 mensajes"/>-->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="saydate">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="timespec">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="ip-addr">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="iterated" type="ip_address"/>
|
||||
<action function="say" data="$1" method="pronounced" type="ip_address"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell-phonetic">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="tts-timeleft">
|
||||
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
|
||||
<!-- If the function "break" is encountered all parsing will cease -->
|
||||
<input pattern="(\d+):(\d+)">
|
||||
<match>
|
||||
<action function="speak-text" data="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/>
|
||||
<action function="break"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="Esa fue una entrada inválida."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input pattern="(\d+) min (\d+) sec">
|
||||
<match>
|
||||
<action function="speak-text" data="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="Esa fue una entrada inválida."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,148 +0,0 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
|
||||
|
||||
<macro name="demo_ivr_count">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- string together several existing sound files to create one long greeting -->
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
|
||||
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
|
||||
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
|
||||
<action function="play-file" data="silence_stream://1500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Register for ClueCon -->
|
||||
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 6: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/6.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_main_menu_short" pause="100">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="silence_stream://1000"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
|
||||
<macro name="demo_ivr_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_sub_menu_short">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,148 +0,0 @@
|
|||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
|
||||
|
||||
<macro name="demo_ivr_count">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- string together several existing sound files to create one long greeting -->
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
|
||||
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
|
||||
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
|
||||
<action function="play-file" data="silence_stream://1500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Register for ClueCon -->
|
||||
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 6: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/6.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_main_menu_short" pause="100">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="silence_stream://1000"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
|
||||
<macro name="demo_ivr_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_sub_menu_short">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,121 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-result_match.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-too_many_result.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_more_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-result_number.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-at_extension.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_next.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_prev.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-start_new_search.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,121 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-result_match.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-too_many_result.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_more_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-result_number.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-at_extension.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_next.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_prev.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-start_new_search.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,96 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Introduzca las primeras letras del apellido de la persona."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Introduzca las primeras letras del nombre de la persona."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Para buscar por apellido, pulse $2"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Para buscar por nombre, pulse $2"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Necesita especificar un mínimo de $1 letras del nombre buscado. Por favor intente de nuevo."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="No hay resultados que coincidan con su busqueda. Por favor intente de nuevo."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 resultados coinciden con su busqueda."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Su busqueda genera demasiados resultados. Por favor intente de nuevo."/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="No hay más resultados."/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Resultado número $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Para seleccionar este resultado pulse $1, para el resultado siguiente pulse $2, para el resultado previo pulse $3, para empezar una nueva busqueda pulse $4"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="en la extensión $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,96 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Ingrese las primeras letras del apellido de la persona."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Ingrese las primeras letras del nombre de la persona."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Para buscar por apellido, pulse $2"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Para buscar por nombre, pulse $2"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Necesita especificar un mínimo de $1 letras del nombre buscado. Por favor intente de nuevo."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="No hay resultados que coincidan con su busqueda. Por favor intente de nuevo."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 resultados coinciden con su busqueda."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Su busqueda genera demasiados resultados. Por favor intente de nuevo."/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="No hay más resultados."/>
|
||||
</match>
|
||||
</input>
|
||||
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Resultado número $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Para seleccionar este resultado pulse $1, para el resultado siguiente pulse $2, para el resultado previo pulse $3, para empezar una nueva busqueda pulse $4"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="en la extensión $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,8 +0,0 @@
|
|||
<include>
|
||||
<language name="es" sound-path="$${sounds_dir}/es/ES/cristina" tts-engine="cepstral" tts-voice="marta">
|
||||
<X-PRE-PROCESS cmd="include" data="demo/*-es-ES.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
|
||||
<!--voicemail_es_ES_tts is purely implemented with tts, we have the files based one that is the default. -->
|
||||
<X-PRE-PROCESS cmd="include" data="vm/sounds-es-ES.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral -->
|
||||
<X-PRE-PROCESS cmd="include" data="dir/sounds-es-ES.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
|
||||
</language>
|
||||
</include>
|
|
@ -1,8 +0,0 @@
|
|||
<include>
|
||||
<language name="es" sound-path="$${sounds_dir}/es/mx/maria" tts-engine="cepstral" tts-voice="marta">
|
||||
<X-PRE-PROCESS cmd="include" data="demo/*-es-MX.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
|
||||
<!--voicemail_es_MX_tts is purely implemented with tts, we have the files based one that is the default. -->
|
||||
<X-PRE-PROCESS cmd="include" data="vm/sounds-es-MX.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral -->
|
||||
<X-PRE-PROCESS cmd="include" data="dir/sounds-es-MX.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
|
||||
</language>
|
||||
</include>
|
|
@ -1,404 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-abort.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^(1):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="play-file" data="digits/un.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$2_s.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To listen to new messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_new.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To listen to saved messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_saved.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- For advanced options -->
|
||||
<action function="play-file" data="voicemail/vm-advanced.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To exit -->
|
||||
<action function="play-file" data="voicemail/vm-to_exit.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To record a greeting -->
|
||||
<action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To choose greeting -->
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To record your name -->
|
||||
<action function="play-file" data="voicemail/vm-record_name2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To change password -->
|
||||
<action function="play-file" data="voicemail/vm-change_password.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To return to main menu -->
|
||||
<action function="play-file" data="voicemail/vm-main_menu.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-continue.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-send_message_now.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-greeting.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-selected.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-person.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-not_available.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message_number.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-too-small.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_disk_quota_exceeded">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_announce_ext">
|
||||
<input pattern="^([^\:]+):(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_full">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_empty">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,404 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-abort.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^(1):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="play-file" data="digits/un.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To listen to new messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_new.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To listen to saved messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_saved.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- For advanced options -->
|
||||
<action function="play-file" data="voicemail/vm-advanced.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To exit -->
|
||||
<action function="play-file" data="voicemail/vm-to_exit.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To record a greeting -->
|
||||
<action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To choose greeting -->
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To record your name -->
|
||||
<action function="play-file" data="voicemail/vm-record_name2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To change password -->
|
||||
<action function="play-file" data="voicemail/vm-change_password.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To return to main menu -->
|
||||
<action function="play-file" data="voicemail/vm-main_menu.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-continue.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-send_message_now.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-greeting.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-selected.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-person.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-not_available.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message_number.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-too-small.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_disk_quota_exceeded">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_announce_ext">
|
||||
<input pattern="^([^\:]+):(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_full">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_empty">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,238 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Por favor introduzca su número de usuario, seguido por $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Por favor introduzca su contraseña, seguido por $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Inicio de sesión incorrecto."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Bienvenido a su buzón de voz."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Adiós."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Demasiados intentos fallidos."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^1:(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="Usted tiene 1 $1 mensaje en la bandeja de entrada ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Usted tiene $1 $2 mensajes en la bandeja de entrada ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para escuchar mensajes nuevos, pulse $1. Para escuchar mensajes guardados, pulse $2. Para opciones avanzadas, pulse $3. Para salir, pulse $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para grabar un saludo, pulse $1. Para elegir un saludo, pulse $2. Para grabar su nombre, pulse $3. Para cambiar su contraseña, pulse $5. Para el menú principal, pulse $5."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Por favor grabe su nombre después de la señal, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para regrabar, pulse $3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para marcar este mensaje como urgente, pulse $1. Para continuar, pulse $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 no es una extensión válida."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Introduzca la extensión a la cual quiere enviar este mensaje, seguido de $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Para grabar un saludo, pulse $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para eliminar la grabación, pulse $3. Para enviar la grabación a su e-mail, pulse $4. Para devolver la llamada, pulse $5. Para enviar este mensaje a otra extensión, pulse $6."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Elija un saludo entre 1 y 9."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Valor inválido."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Grabe su saludo después de la señal, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Grabe su mensaje después de la señal, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Saludo $1 seleccionado."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 no está disponible."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 mensaje número $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="mensaje $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,238 +0,0 @@
|
|||
<include><!--This line will be ignored it's here to validate the xml and is optional -->
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Por favor ingrese su número de usuario, seguido por $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Por favor ingrese su contraseña, seguido por $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Inicio de sesión incorrecto."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Bienvenido a su buzón de voz."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Adiós."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Demasiados intentos fallidos."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^1:(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="Usted tiene 1 $1 mensaje en la bandeja de entrada ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Usted tiene $1 $2 mensajes en la bandeja de entrada ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para escuchar mensajes nuevos, pulse $1. Para escuchar mensajes guardados, pulse $2. Para opciones avanzadas, pulse $3. Para salir, pulse $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para grabar un saludo, pulse $1. Para elegir un saludo, pulse $2. Para grabar su nombre, pulse $3. Para cambiar su contraseña, pulse $5. Para el menú principal, pulse $5."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Después del tono, por favor anote su nombre, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para regrabar, pulse $3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para marcar este mensaje como urgente, pulse $1. Para continuar, pulse $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 no es una extensión válida."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Introduzca la extensión a la cual quiere enviar este mensaje, seguido de $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Para grabar un saludo, pulse $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para eliminar la grabación, pulse $3. Para enviar la grabación a su e-mail, pulse $4. Para devolver la llamada, pulse $5. Para enviar este mensaje a otra extensión, pulse $6."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Elija un saludo entre 1 y 9."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Valor inválido."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Grabe su saludo después del tono, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Grabe su mensaje después del tono, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Saludo $1 seleccionado."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 no está disponible."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 mensaje número $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="mensaje $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
@ -1,29 +0,0 @@
|
|||
<include>
|
||||
<macro name="msgcount">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="tuas.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="timeleft">
|
||||
<input pattern="(\d+):(\d+)">
|
||||
<match>
|
||||
<action function="speak-text" data="il reste $1 minutes et $2 secondes"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,130 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter-person.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter-person.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-specify_mininum_first.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_match_entry.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-result_match.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_many_result.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_more_result.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-result_number.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-at_extension.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_next.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_prev.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-to_make_new_search.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,110 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Veuillez entrer les premières lettres du nom de famille"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="Veuillez entrer les premières lettres du prénom"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="pour chercher par prénom, tapez $2"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="speak-text" data="pour chercher par nom de famille, tapez $2"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(1)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Vous devez entrer au minimum une lettre du nom de la personne, essayez encore"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Vous devez entrer au minimum $1 lettres du nom de la personne, essayer encore"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="speak-text" data="Votre recherche n'a retournée aucun résultat, essayez encore"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 résultats correspondent à votre recherche"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Votre recherche retourne trop de résultats, essayer encore"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Fin des résultats."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="Résultat numéro $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text" data="Pour sélectionner ce nom, tapez $1, pour le nom suivant tapez $2, pour le nom précédent, tapez $3, pour faire une nouvelle recherche, tapez $4"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="au poste $1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,23 +0,0 @@
|
|||
<include>
|
||||
<language name="fr" say-module="fr" sound-prefix="$${sounds_dir}/fr/ca/june" tts-engine="cepstral" tts-voice="david">
|
||||
<phrases>
|
||||
<macros>
|
||||
<X-PRE-PROCESS cmd="include" data="demo/demo.xml"/>
|
||||
<!-- voicemail_fr_tts is purely implemented with tts, we need a files based implementation too -->
|
||||
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
|
||||
</macros>
|
||||
</phrases>
|
||||
</language>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,255 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Entrez votre Identification, suivi par $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Entrez votre code, suivi par $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Identification incorrecte."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Bienvenue sur votre répondeur."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Au revoir."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="speak-text" data="Trop de tentatives ont échouées."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^([^:]+):urgent-new">
|
||||
<match>
|
||||
<action function="speak-text" data="Vous avez $1 nouveaux messages urgents dans le répertoire ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([^:]+):new">
|
||||
<match>
|
||||
<action function="speak-text" data="Vous avez $1 nouveaux messages dans le répertoire ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([^:]+):saved">
|
||||
<match>
|
||||
<action function="speak-text" data="Vous avez $1 messages sauvegardés dans le répertoire ${voicemail_current_folder}."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Pour écouter les nouveaux messages, tapez $1, Pour écouter les messages enregistrés, tapez $2, Pour les options avancées, tapez $3, pour sortir, tapez $4."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="pour enregistrer un message d'accueil, tapez $1, Pour choisir votre message d'accueil, tapez $2, Pour enregistrer votre nom, tapez $3, Pour changer votre mot de passe, tapez $4, Pour retourner au menu principal, tapez $5."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="enregistrez votre nom après le bip, puis tapez une touche, ou arrêtez de parler pour arrêter l'enregistrement."/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Pour écouter l'enregistrement, tapez $1, pour sauvegarder l'enregistrement, tapez $2, Pour réenregistrer, tapez $3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Pour indiquer que ce message est urgent, tapez $1, Pour continuer, tapez $2."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])(:(.*))?$">
|
||||
<match>
|
||||
<action function="speak-text"
|
||||
data="Pour réécouter l'enregistrement à nouveau, tapez $1, Pour sauvegarder l'enregistrement, tapez $2, Pour supprimer l'enregistrement, tapez $3, pour transférer l'enregistrement à votre email $8, tapez $4, Pour appeler l'auteur du message, tapez $5, Pour transférer ce message à un autre numéro, tapez $6."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="choisissez un message d'accueil entre 1 et 3."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="valeur incorrecte."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="enregistrez votre message d'accueil après le bip, puis tapez une touche ou arrêtez de parler pour arrêter l'enregistrement."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="enregistrez votre message après le bip, puis tapez une touche ou arrêtez de parler pour arrêter l'enregistrement."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message d'accueil numéro $1 sélectionné."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1 n'est pas disponible."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^new:(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="nouveau message numéro $1."/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^saved:(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message sauvegardé numéro $1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="$1."/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message trop court"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message supprimé"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message sauvegardé"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message envoyé"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="speak-text" data="message marqué urgent"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="speak-text" data="${strftime($1|%e/%m/%Y, %H heures %M)}"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,157 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="demo_ivr_count">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- string together several existing sound files to create one long greeting -->
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
|
||||
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
|
||||
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
|
||||
<action function="play-file" data="silence_stream://1500"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Register for ClueCon -->
|
||||
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 6: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/6.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_main_menu_short" pause="100">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option 1: Call FreeSWITCH conference-->
|
||||
<action function="play-file" data="silence_stream://1000"/>
|
||||
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/1.wav"/>
|
||||
|
||||
<!-- Menu option 2: Do FreeSWITCH echo test -->
|
||||
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/2.wav"/>
|
||||
|
||||
<!-- Menu option 3: Listen to Music on Hold -->
|
||||
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/3.wav"/>
|
||||
|
||||
<!-- Menu option 4: Hear a sample submenu -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/4.wav"/>
|
||||
|
||||
<!-- Menu option 5: Listen to screaming monkeys -->
|
||||
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/5.wav"/>
|
||||
|
||||
<!-- Menu option 9: Repeat these options -->
|
||||
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/9.wav"/>
|
||||
<action function="play-file" data="silence_stream://2000"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
|
||||
<macro name="demo_ivr_sub_menu">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
|
||||
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
|
||||
<!-- The short version has all the options but not the initial greeting -->
|
||||
<macro name="demo_ivr_sub_menu_short">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!-- Menu option *: Return to top menu -->
|
||||
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
|
||||
<action function="play-file" data="ivr/ivr-please.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="play-file" data="digits/star.wav"/>
|
||||
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,82 +0,0 @@
|
|||
<include>
|
||||
<macro name="msgcount">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="execute" data="sleep(1000)"/>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
<!-- or -->
|
||||
<!--<action function="speak-text" data="you have $1 messages"/>-->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="saydate">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="timespec">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="ip-addr">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="iterated" type="ip_address"/>
|
||||
<action function="say" data="$1" method="pronounced" type="ip_address"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="spell-phonetic">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<macro name="tts-timeleft">
|
||||
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
|
||||
<!-- If the function "break" is encountered all parsing will cease -->
|
||||
<input pattern="(\d+):(\d+)">
|
||||
<match>
|
||||
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
|
||||
<action function="break"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="That input was invalid."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
<input pattern="(\d+) min (\d+) sec">
|
||||
<match>
|
||||
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
|
||||
</match>
|
||||
<nomatch>
|
||||
<action function="speak-text" data="That input was invalid."/>
|
||||
</nomatch>
|
||||
</input>
|
||||
</macro>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,130 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="directory_intro">
|
||||
<input pattern="^(last_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name)" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-enter_person.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-first_name.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_search_by.wav"/>
|
||||
<action function="play-file" data="directory/dir-last_name.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_min_search_digits">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count">
|
||||
<input pattern="^0$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="directory/dir-result_match.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_count_too_large">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-too_many_result.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_last">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-no_more_results.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_item">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-result_number.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_at">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-at_extension.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_menu">
|
||||
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_next.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-for_prev.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="directory/dir-start_new_search.wav"/>
|
||||
<action function="play-file" data="directory/dir-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="directory_result_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,22 +0,0 @@
|
|||
<include>
|
||||
<language name="he" sound-prefix="$${sounds_dir}/he/daniel" tts-engine="cepstral" tts-voice="daniel">
|
||||
<phrases>
|
||||
<macros>
|
||||
<X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
|
||||
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/>
|
||||
<X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/>
|
||||
</macros>
|
||||
</phrases>
|
||||
</language>
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
|
@ -1,417 +0,0 @@
|
|||
<include>
|
||||
|
||||
<macro name="voicemail_enter_id">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_id.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_enter_pass">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-enter_pass.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_fail_auth">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-fail_auth.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_hello">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-hello.wav"/> -->
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_goodbye">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-goodbye.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_abort">
|
||||
<input pattern="(.*)">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-abort.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_message_count">
|
||||
<input pattern="^(1):(.*)$" break_on_match="true">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-you_have.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-$2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-messages.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To listen to new messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_new.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To listen to saved messages -->
|
||||
<action function="play-file" data="voicemail/vm-listen_saved.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- For advanced options -->
|
||||
<action function="play-file" data="voicemail/vm-advanced.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To exit -->
|
||||
<action function="play-file" data="voicemail/vm-to_exit.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_phonetic"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_config_menu">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!-- To record a greeting -->
|
||||
<action function="play-file" data="voicemail/vm-to_record_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To choose greeting -->
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To record your name -->
|
||||
<action function="play-file" data="voicemail/vm-record_name2.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To change password -->
|
||||
<action function="play-file" data="voicemail/vm-change_password.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="execute" data="sleep(100)"/>
|
||||
|
||||
<!-- To return to main menu -->
|
||||
<action function="play-file" data="voicemail/vm-main_menu.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_name1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_urgent_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mark-urgent.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-continue.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_prepend">
|
||||
<input pattern="^([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_add_intro.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-send_message_now.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_forward_message_enter_extension">
|
||||
<input pattern="^([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-followed_by.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_invalid_extension">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_listen_file_check">
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-forward_to_email.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-delete_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-return_call.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$5" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-to_forward.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$6" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_choose_greeting_fail">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_greeting.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_record_message">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-record_message.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_greeting_selected">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-greeting.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
<action function="play-file" data="voicemail/vm-selected.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_play_greeting">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-person.wav"/>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-not_available.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_number">
|
||||
<input pattern="^(\d+)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_message_number">
|
||||
<input pattern="^([a-z]+):(\d+)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-message_number.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="items"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_phone_number">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_name">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
<!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded -->
|
||||
<macro name="voicemail_ack">
|
||||
<input pattern="^(too-small)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-too-small.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(deleted)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(saved)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(emailed)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(marked-urgent)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-message.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-$1.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="voicemail_disk_quota_exceeded">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="voicemail/vm-mailbox_full.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_announce_ext">
|
||||
<input pattern="^([^\:]+):(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_full">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="valet_lot_empty">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
<!--
|
||||
For Emacs:
|
||||
Local Variables:
|
||||
mode:xml
|
||||
indent-tabs-mode:nil
|
||||
tab-width:2
|
||||
c-basic-offset:2
|
||||
End:
|
||||
For VIM:
|
||||
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
|
||||
-->
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue