Merge branch 'master' into master
This commit is contained in:
commit
fa2199953e
|
@ -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,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=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=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=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=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/ /
|
|
@ -9,20 +9,39 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- "**"
|
- "**"
|
||||||
workflow_dispatch:
|
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:
|
concurrency:
|
||||||
group: ${{ github.head_ref || github.ref }}
|
group: ${{ github.head_ref || github.ref }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
excludes:
|
preconfig:
|
||||||
name: 'Excludes'
|
name: 'Preconfig'
|
||||||
# if: github.event.pull_request.head.repo.full_name == github.repository
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
deb: ${{ steps.deb.outputs.excludes }}
|
deb: ${{ steps.deb.outputs.excludes }}
|
||||||
|
release: ${{ steps.release.outputs.release }}
|
||||||
steps:
|
steps:
|
||||||
- id: deb
|
- name: Generate Matrix excludes for DEB
|
||||||
name: Generate Matrix excludes for DEB
|
id: deb
|
||||||
run: |
|
run: |
|
||||||
JSON="[]"
|
JSON="[]"
|
||||||
|
|
||||||
|
@ -51,14 +70,58 @@ jobs:
|
||||||
|
|
||||||
echo "excludes=$(echo $JSON | jq -c .)" | tee -a $GITHUB_OUTPUT
|
echo "excludes=$(echo $JSON | jq -c .)" | tee -a $GITHUB_OUTPUT
|
||||||
|
|
||||||
deb:
|
- name: Get release type based on branch
|
||||||
name: 'DEB'
|
id: release
|
||||||
# if: github.event.pull_request.head.repo.full_name == github.repository
|
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:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: read
|
contents: read
|
||||||
needs:
|
needs:
|
||||||
- excludes
|
- preconfig
|
||||||
|
- issue-token
|
||||||
uses: signalwire/actions-template/.github/workflows/cicd-docker-build-and-distribute.yml@main
|
uses: signalwire/actions-template/.github/workflows/cicd-docker-build-and-distribute.yml@main
|
||||||
strategy:
|
strategy:
|
||||||
# max-parallel: 1
|
# max-parallel: 1
|
||||||
|
@ -76,17 +139,30 @@ jobs:
|
||||||
runner: linux-arm64-4-core-public
|
runner: linux-arm64-4-core-public
|
||||||
- name: arm64v8
|
- name: arm64v8
|
||||||
runner: linux-arm64-4-core-public
|
runner: linux-arm64-4-core-public
|
||||||
exclude: ${{ fromJson(needs.excludes.outputs.deb) }}
|
release:
|
||||||
|
- ${{ needs.preconfig.outputs.release }}
|
||||||
|
exclude: ${{ fromJson(needs.preconfig.outputs.deb) }}
|
||||||
with:
|
with:
|
||||||
RUNNER: ${{ matrix.platform.runner }}
|
RUNNER: ${{ matrix.platform.runner }}
|
||||||
|
REF: ${{ inputs.freeswitch_ref }}
|
||||||
ARTIFACTS_PATTERN: '.*\.(deb|dsc|changes|tar.bz2|tar.gz|tar.lzma|tar.xz)$'
|
ARTIFACTS_PATTERN: '.*\.(deb|dsc|changes|tar.bz2|tar.gz|tar.lzma|tar.xz)$'
|
||||||
DOCKERFILE: .github/docker/${{ matrix.os }}/${{ matrix.version }}/${{ matrix.platform.name }}/Dockerfile
|
DOCKERFILE: .github/docker/${{ matrix.os }}/${{ matrix.version }}/${{ matrix.platform.name }}/public.${{ matrix.release }}.Dockerfile
|
||||||
MAINTAINER: 'Andrey Volk <andrey@signalwire.com>'
|
MAINTAINER: 'Andrey Volk <andrey@signalwire.com>'
|
||||||
META_FILE_PATH_PREFIX: /var/www/freeswitch/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}
|
META_FILE_PATH_PREFIX: /var/www/freeswitch/public/${{ matrix.release }}/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}
|
||||||
PLATFORM: ${{ matrix.platform.name }}
|
PLATFORM: ${{ matrix.platform.name }}
|
||||||
REPO_DOMAIN: freeswitch.signalwire.com
|
REPO_DOMAIN: 'freeswitch.signalwire.com'
|
||||||
TARGET_ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-artifact
|
TARGET_ARTIFACT_NAME: ${{ matrix.os }}-${{ matrix.version }}-${{ matrix.platform.name }}-public-${{ matrix.release }}-artifact
|
||||||
UPLOAD_BUILD_ARTIFACTS: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.title, ':upload-artifacts') }}
|
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:
|
secrets:
|
||||||
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
|
GH_BOT_DEPLOY_TOKEN: ${{ secrets.PAT }}
|
||||||
HOSTNAME: ${{ secrets.HOSTNAME }}
|
HOSTNAME: ${{ secrets.HOSTNAME }}
|
||||||
|
@ -94,19 +170,45 @@ jobs:
|
||||||
USERNAME: ${{ secrets.USERNAME }}
|
USERNAME: ${{ secrets.USERNAME }}
|
||||||
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }}
|
TELEPORT_TOKEN: ${{ secrets.TELEPORT_TOKEN }}
|
||||||
REPO_USERNAME: 'SWUSERNAME'
|
REPO_USERNAME: 'SWUSERNAME'
|
||||||
REPO_PASSWORD: ${{ secrets.REPOTOKEN }}
|
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:
|
meta:
|
||||||
name: 'Publish build data to meta-repo'
|
name: 'Publish build data to meta-repo'
|
||||||
if: ${{ github.event_name != 'pull_request' || contains(github.event.pull_request.title, ':upload-artifacts') }}
|
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:
|
needs:
|
||||||
- deb
|
- deb-public
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: read
|
contents: read
|
||||||
uses: signalwire/actions-template/.github/workflows/meta-repo-content.yml@main
|
uses: signalwire/actions-template/.github/workflows/meta-repo-content.yml@main
|
||||||
with:
|
with:
|
||||||
META_CONTENT: '/var/www/freeswitch/${{ github.ref_name }}/${{ github.run_id }}-${{ github.run_number }}'
|
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: signalwire/bamboo_gha_trigger
|
||||||
META_REPO_BRANCH: trigger/freeswitch/${{ github.ref_name }}
|
META_REPO_BRANCH: trigger/freeswitch/${{ github.ref_name }}
|
||||||
secrets:
|
secrets:
|
||||||
|
|
|
@ -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'
|
|
@ -255,9 +255,6 @@ libs/sofia-sip*
|
||||||
|
|
||||||
src/mod/applications/mod_test/test/test_asr
|
src/mod/applications/mod_test/test/test_asr
|
||||||
src/mod/applications/mod_test/test/test_tts
|
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
|
||||||
src/mod/applications/mod_http_cache/test/Makefile.in
|
src/mod/applications/mod_http_cache/test/Makefile.in
|
||||||
src/mod/applications/mod_http_cache/test/test-suite.log
|
src/mod/applications/mod_http_cache/test/test-suite.log
|
||||||
|
@ -266,7 +263,6 @@ src/mod/applications/mod_http_cache/test/test_aws.log
|
||||||
src/mod/applications/mod_http_cache/test/test_aws.trs
|
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
|
||||||
src/mod/formats/mod_sndfile/test/test_sndfile_conf
|
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/*.log
|
||||||
src/mod/*/*/test/*.trs
|
src/mod/*/*/test/*.trs
|
||||||
src/mod/*/*/test/[0-9]*/*
|
src/mod/*/*/test/[0-9]*/*
|
||||||
|
|
|
@ -218,8 +218,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sql
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2017.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2017.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}"
|
||||||
EndProject
|
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}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2017.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2017.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2017.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}"
|
||||||
|
@ -556,6 +554,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_ivr_originate",
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_core_codec", "tests\unit\test_switch_core_codec.2017.vcxproj", "{589A07E7-5DE5-49FD-A62C-27795B806AFB}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_switch_core_codec", "tests\unit\test_switch_core_codec.2017.vcxproj", "{589A07E7-5DE5-49FD-A62C-27795B806AFB}"
|
||||||
EndProject
|
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
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
All|Win32 = All|Win32
|
All|Win32 = All|Win32
|
||||||
|
@ -828,17 +830,6 @@ Global
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32
|
{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.ActiveCfg = Release|x64
|
||||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = 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|Win32.ActiveCfg = Release|x64
|
||||||
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64
|
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64
|
||||||
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64
|
{0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64
|
||||||
|
@ -2530,6 +2521,30 @@ Global
|
||||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|Win32.Build.0 = 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.ActiveCfg = Release|x64
|
||||||
{589A07E7-5DE5-49FD-A62C-27795B806AFB}.Release|x64.Build.0 = 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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -2575,7 +2590,6 @@ Global
|
||||||
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {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}
|
{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}
|
{0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C}
|
||||||
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B}
|
||||||
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
|
{FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781}
|
||||||
|
@ -2729,6 +2743,8 @@ Global
|
||||||
{580675D7-C1C9-4197-AAC5-00F64FAFDE78} = {9388C266-C3FC-468A-92EF-0CBC35941412}
|
{580675D7-C1C9-4197-AAC5-00F64FAFDE78} = {9388C266-C3FC-468A-92EF-0CBC35941412}
|
||||||
{69A7464A-9B0D-4804-A108-835229DACF58} = {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}
|
{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
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {09840DE7-9208-45AA-9667-1A71EE93BD1E}
|
SolutionGuid = {09840DE7-9208-45AA-9667-1A71EE93BD1E}
|
||||||
|
|
5
LICENSE
5
LICENSE
|
@ -1202,10 +1202,6 @@ Files: src/include/switch_cpp.h
|
||||||
Copyright: 2007 Yossi Neiman <freeswitch@cartissolutions.com>
|
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)
|
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*/*
|
Files: libs/apr*/*
|
||||||
Copyright: 2000-2005 The Apache Software Foundation or its licensors
|
Copyright: 2000-2005 The Apache Software Foundation or its licensors
|
||||||
1991-1992, RSA Data Security, Inc.
|
1991-1992, RSA Data Security, Inc.
|
||||||
|
@ -1519,7 +1515,6 @@ License: MPL-1.1
|
||||||
|
|
||||||
Files: src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/*
|
Files: src/mod/endpoints/mod_gsmopen/gsmlib/gsmlib-1.10-patched-13ubuntu/*
|
||||||
src/mod/languages/mod_lua/lua-mode.el
|
src/mod/languages/mod_lua/lua-mode.el
|
||||||
libs/iksemel/ltmain.sh
|
|
||||||
Copyright: 1995-2007 Free Software Foundation, Inc.
|
Copyright: 1995-2007 Free Software Foundation, Inc.
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
|
|
||||||
|
|
10
Makefile.am
10
Makefile.am
|
@ -668,9 +668,6 @@ nodepends: .nodepends
|
||||||
yesdepends:
|
yesdepends:
|
||||||
rm .nodepends
|
rm .nodepends
|
||||||
|
|
||||||
iksemel-dep:
|
|
||||||
make -C src/mod/formats/mod_ssml deps
|
|
||||||
|
|
||||||
core: $(switch_builddir)/modules.conf src/include/switch_version.h $(CORE_LIBS)
|
core: $(switch_builddir)/modules.conf src/include/switch_version.h $(CORE_LIBS)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) libfreeswitch.la
|
$(MAKE) $(AM_MAKEFLAGS) libfreeswitch.la
|
||||||
|
|
||||||
|
@ -744,13 +741,6 @@ srtp-reconf:
|
||||||
cd libs/srtp && sh ./config.status --recheck
|
cd libs/srtp && sh ./config.status --recheck
|
||||||
cd libs/srtp && sh ./config.status
|
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:
|
cluecon:
|
||||||
@clear
|
@clear
|
||||||
@echo Thank you for updating. This is going to take a while so relax.
|
@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:
|
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)
|
* [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi)
|
||||||
* [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7)
|
* [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/sac-openssl.m4])
|
||||||
m4_include([build/config/sched_setaffinity.m4])
|
m4_include([build/config/sched_setaffinity.m4])
|
||||||
m4_include([libs/apr/build/apr_common.m4])
|
m4_include([libs/apr/build/apr_common.m4])
|
||||||
m4_include([libs/iksemel/build/libgnutls.m4])
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ BGJOB=false
|
||||||
VERBOSE=false
|
VERBOSE=false
|
||||||
BASEDIR=`pwd`;
|
BASEDIR=`pwd`;
|
||||||
LIBDIR=${BASEDIR}/libs;
|
LIBDIR=${BASEDIR}/libs;
|
||||||
SUBDIRS="apr iksemel srtp fs";
|
SUBDIRS="apr srtp fs";
|
||||||
|
|
||||||
while getopts 'jhd:v' o; do
|
while getopts 'jhd:v' o; do
|
||||||
case "$o" in
|
case "$o" in
|
||||||
|
|
|
@ -17,5 +17,4 @@ extraclean-modules: extraclean
|
||||||
|
|
||||||
print_tests:
|
print_tests:
|
||||||
@set +e; \
|
@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;
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,6 @@ event_handlers/mod_event_socket
|
||||||
#event_handlers/mod_json_cdr
|
#event_handlers/mod_json_cdr
|
||||||
#event_handlers/mod_radius_cdr
|
#event_handlers/mod_radius_cdr
|
||||||
#event_handlers/mod_odbc_cdr
|
#event_handlers/mod_odbc_cdr
|
||||||
#event_handlers/mod_rayo
|
|
||||||
#event_handlers/mod_smpp
|
#event_handlers/mod_smpp
|
||||||
#event_handlers/mod_snmp
|
#event_handlers/mod_snmp
|
||||||
#event_handlers/mod_event_zmq
|
#event_handlers/mod_event_zmq
|
||||||
|
@ -122,7 +121,6 @@ formats/mod_png
|
||||||
#formats/mod_shell_stream
|
#formats/mod_shell_stream
|
||||||
#formats/mod_shout
|
#formats/mod_shout
|
||||||
formats/mod_sndfile
|
formats/mod_sndfile
|
||||||
#formats/mod_ssml
|
|
||||||
formats/mod_tone_stream
|
formats/mod_tone_stream
|
||||||
#formats/mod_vlc
|
#formats/mod_vlc
|
||||||
#formats/mod_opusfile
|
#formats/mod_opusfile
|
||||||
|
|
|
@ -106,7 +106,6 @@ event_handlers/mod_format_cdr
|
||||||
event_handlers/mod_json_cdr
|
event_handlers/mod_json_cdr
|
||||||
#event_handlers/mod_radius_cdr
|
#event_handlers/mod_radius_cdr
|
||||||
event_handlers/mod_odbc_cdr
|
event_handlers/mod_odbc_cdr
|
||||||
event_handlers/mod_rayo
|
|
||||||
event_handlers/mod_snmp
|
event_handlers/mod_snmp
|
||||||
#event_handlers/mod_event_zmq
|
#event_handlers/mod_event_zmq
|
||||||
formats/mod_imagick
|
formats/mod_imagick
|
||||||
|
@ -117,7 +116,6 @@ formats/mod_portaudio_stream
|
||||||
formats/mod_shell_stream
|
formats/mod_shell_stream
|
||||||
formats/mod_shout
|
formats/mod_shout
|
||||||
formats/mod_sndfile
|
formats/mod_sndfile
|
||||||
formats/mod_ssml
|
|
||||||
formats/mod_tone_stream
|
formats/mod_tone_stream
|
||||||
formats/mod_vlc
|
formats/mod_vlc
|
||||||
languages/mod_basic
|
languages/mod_basic
|
||||||
|
|
|
@ -0,0 +1,258 @@
|
||||||
|
#!/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_sangoma_codec/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
|
|
@ -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:
|
|
||||||
-->
|
|
|
@ -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,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="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="Faltam $1 minutos, $2 segundos $strftime(%Y-%m-%d)"/>
|
|
||||||
<action function="break"/>
|
|
||||||
</match>
|
|
||||||
<nomatch>
|
|
||||||
<action function="speak-text" data="Essa opção não é valida."/>
|
|
||||||
</nomatch>
|
|
||||||
</input>
|
|
||||||
<input pattern="(\d+) min (\d+) sec">
|
|
||||||
<match>
|
|
||||||
<action function="speak-text" data="Faltam $1 minutos, $2 segundos $strftime(%Y-%m-%d)"/>
|
|
||||||
</match>
|
|
||||||
<nomatch>
|
|
||||||
<action function="speak-text" data="Essa opção não é valida."/>
|
|
||||||
</nomatch>
|
|
||||||
</input>
|
|
||||||
</macro>
|
|
||||||
</include><!--This line will be ignored it's here to validate the xml and is optional -->
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue