panoramisk-1.4/0000755000175000017500000000000014103000545013732 5ustar gawelgawel00000000000000panoramisk-1.4/.coveragerc0000644000175000017500000000040214103000544016046 0ustar gawelgawel00000000000000[run] omit = */panoramisk/command.py */panoramisk/call_manager.py include = */panoramisk/panoramisk/* [report] exclude_lines = pragma: no cover def __repr__ raise NotImplementedError if __name__ == .__main__.: def parse_args panoramisk-1.4/CHANGES.rst0000644000175000017500000000366314103000544015543 0ustar gawelgawel000000000000001.4 (2021-08-05) ---------------- - py38 support - no longer use `yield from` syntaxe. - Added custom options for connect method: run_forever, on_startup, on_shutdown, reconnect_timeout - Make ping interval and ping delay more configurable. Callbacks on_login, on_connect and on_disconnect added for use in metrics - Avoid double exception logging because log.exception() already logs the stacktrace - Multiple FastAGI support improvement 1.3 (2018-09-21) ---------------- - py37 support 1.2 (2018-05-24) ---------------- - Fix KeyError problem in call_manager - as_list is now default to none and is used first in Action.multi - improve AMI version detection 1.1 (2016-12-29) ---------------- - We no longer loosing calls on reconnection - End of support for python<3.4 - Better test coverage 1.0 (2015-08-19) ---------------- - Add FastAGI server, implemented with high-level AsyncIO API (Streams) - Add events parameter for Manager, to disable AMI events reception (Useful for performance reasons) - Finish AsyncAGI commands support (WIP) 0.6 (2014-11-16) ---------------- - Avoid failure when factory is not already set 0.5 (2014-11-16) ---------------- - AMI command results tracking fixed - Return AMI command result with multiple events in a Future - Return AsyncAGI command result in a Future - Add several examples - Internal refactoring - Remove arawman support - Remove external dependencies - Add support for multiple responses from Actions (example: QueueStatus) - Improved performance with Events pattern matching - Add mocked test wrapper - Add coroutine support for Events dispatching - Invert event callback signature to create Manager methods to handle events - Support of AMI commands - Support of AsyncAGI commands (Not finished) 0.4 (2014-05-30) ---------------- - Compat with the latest trollius 0.3 (2014-01-10) ---------------- - Don't send commands twice 0.2 (2014-01-09) ---------------- - Initial release panoramisk-1.4/CONTRIBUTING.rst0000644000175000017500000000123614103000544016374 0ustar gawelgawel00000000000000Contribute ========== Feel free to clone the project on `GitHub `_. Once you made a change, try to add a test for your feature/fix. At least assume that you have'nt broke anything by running tox:: $ tox ... py34: commands succeeded py35: commands succeeded flake8: commands succeeded docs: commands succeeded congratulations :) You can run tests for a specific version:: $ tox -e py35 Running individual test:: $ tox -e py35 tests/test_manager.py::test_connection You can also build the docs with:: $ tox -e docs And check the result:: $ firefox .tox/docs/tmp/html/index.html panoramisk-1.4/LICENSE0000644000175000017500000000207214103000544014737 0ustar gawelgawel00000000000000The MIT License (MIT) Copyright (c) 2015 Gael Pasgrimaud Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. panoramisk-1.4/MANIFEST.in0000644000175000017500000000056314103000544015473 0ustar gawelgawel00000000000000graft examples graft tools graft docs prune docs/_build prune .github/ graft panoramisk graft tests graft tests_python3 include *.rst *.cfg *.ini Pipfile* .coveragerc LICENCE global-exclude *.pyc global-exclude __pycache__ global-exclude .installed.cfg include *.py include .coveragerc include LICENSE recursive-include examples *.py recursive-include tests_python3 *.py panoramisk-1.4/PKG-INFO0000644000175000017500000000610014103000545015024 0ustar gawelgawel00000000000000Metadata-Version: 2.1 Name: panoramisk Version: 1.4 Summary: asyncio based library to play with asterisk Home-page: https://github.com/gawel/panoramisk/ Author: Gael Pasgrimaud Author-email: gael@gawel.org License: MIT license Description: ================================ Panoramisk. The Asterisk's druid ================================ .. image:: https://travis-ci.org/gawel/panoramisk.png?branch=master&style=flat-square :target: https://travis-ci.org/gawel/panoramisk .. image:: https://img.shields.io/coveralls/gawel/panoramisk/master.svg :target: https://coveralls.io/r/gawel/panoramisk?branch=master .. image:: https://img.shields.io/pypi/v/panoramisk.svg?style=flat-square :target: https://pypi.python.org/pypi/panoramisk .. image:: https://img.shields.io/pypi/dw/panoramisk.svg?style=flat-square :target: https://pypi.python.org/pypi/panoramisk .. image:: https://img.shields.io/github/issues/gawel/panoramisk.svg?style=flat-square :target: https://github.com/gawel/panoramisk/issues .. image:: https://img.shields.io/github/license/gawel/panoramisk.svg?style=flat-square :target: https://github.com/gawel/panoramisk/blob/master/LICENSE `Panoramisk` is a library based on python's `AsyncIO `_ to play with `Asterisk `_'s `manager `_. It uses the TCP manager server to listen to events and send actions. For basic usage, you have some examples in `examples/ `_ folder. You can find some help on IRC: irc://irc.freenode.net/panoramisk (`www `_) Source code is available at https://github.com/gawel/panoramisk/ Check the `full documentation `_ I've spent hours writing this software, with love. Please consider tiping if you like it: BTC: 1PruQAwByDndFZ7vTeJhyWefAghaZx9RZg ETH: 0xb6418036d8E06c60C4D91c17d72Df6e1e5b15CE6 LTC: LY6CdZcDbxnBX9GFBJ45TqVj8NykBBqsmT Keywords: asyncio,asterisk,voip Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Topic :: Communications :: Telephony Classifier: Topic :: Software Development :: Libraries :: Python Modules Provides-Extra: test panoramisk-1.4/Pipfile0000644000175000017500000000022414103000544015242 0ustar gawelgawel00000000000000[[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] [dev-packages] tox = "*" [requires] python_version = "3.7" panoramisk-1.4/Pipfile.lock0000644000175000017500000001051314103000544016173 0ustar gawelgawel00000000000000{ "_meta": { "hash": { "sha256": "0b1c8e49c9289fc7ec8fee4ee9852693e20d7d02ec9805b0e1afc2800c89e025" }, "pipfile-spec": 6, "requires": { "python_version": "3.7" }, "sources": [ { "name": "pypi", "url": "https://pypi.org/simple", "verify_ssl": true } ] }, "default": {}, "develop": { "appdirs": { "hashes": [ "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" ], "version": "==1.4.4" }, "distlib": { "hashes": [ "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb", "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1" ], "version": "==0.3.1" }, "filelock": { "hashes": [ "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" ], "version": "==3.0.12" }, "importlib-metadata": { "hashes": [ "sha256:19192b88d959336bfa6bdaaaef99aeafec179eca19c47c804e555703ee5f07ef", "sha256:2e881981c9748d7282b374b68e759c87745c25427b67ecf0cc67fb6637a1bff9" ], "markers": "python_version < '3.8'", "version": "==4.0.0" }, "packaging": { "hashes": [ "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" ], "version": "==20.9" }, "pluggy": { "hashes": [ "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" ], "version": "==0.13.1" }, "py": { "hashes": [ "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" ], "index": "pypi", "version": "==1.10.0" }, "pyparsing": { "hashes": [ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], "version": "==2.4.7" }, "six": { "hashes": [ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], "version": "==1.15.0" }, "tox": { "hashes": [ "sha256:4df108a1fcc93a7ee4ac97e1a3a1fc3d41ddd22445d518976604e2ef05025280", "sha256:9f0cbcc36e08c2c4ae90d02d3d1f9a62231f974bcbc1df85e8045946d8261059" ], "index": "pypi", "version": "==3.1.2" }, "typing-extensions": { "hashes": [ "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918", "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c", "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f" ], "markers": "python_version < '3.8'", "version": "==3.7.4.3" }, "virtualenv": { "hashes": [ "sha256:09c61377ef072f43568207dc8e46ddeac6bcdcaf288d49011bda0e7f4d38c4a2", "sha256:a935126db63128861987a7d5d30e23e8ec045a73840eeccb467c148514e29535" ], "version": "==20.4.4" }, "zipp": { "hashes": [ "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76", "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098" ], "version": "==3.4.1" } } } panoramisk-1.4/README.rst0000644000175000017500000000364114103000544015424 0ustar gawelgawel00000000000000================================ Panoramisk. The Asterisk's druid ================================ .. image:: https://travis-ci.org/gawel/panoramisk.png?branch=master&style=flat-square :target: https://travis-ci.org/gawel/panoramisk .. image:: https://img.shields.io/coveralls/gawel/panoramisk/master.svg :target: https://coveralls.io/r/gawel/panoramisk?branch=master .. image:: https://img.shields.io/pypi/v/panoramisk.svg?style=flat-square :target: https://pypi.python.org/pypi/panoramisk .. image:: https://img.shields.io/pypi/dw/panoramisk.svg?style=flat-square :target: https://pypi.python.org/pypi/panoramisk .. image:: https://img.shields.io/github/issues/gawel/panoramisk.svg?style=flat-square :target: https://github.com/gawel/panoramisk/issues .. image:: https://img.shields.io/github/license/gawel/panoramisk.svg?style=flat-square :target: https://github.com/gawel/panoramisk/blob/master/LICENSE `Panoramisk` is a library based on python's `AsyncIO `_ to play with `Asterisk `_'s `manager `_. It uses the TCP manager server to listen to events and send actions. For basic usage, you have some examples in `examples/ `_ folder. You can find some help on IRC: irc://irc.freenode.net/panoramisk (`www `_) Source code is available at https://github.com/gawel/panoramisk/ Check the `full documentation `_ I've spent hours writing this software, with love. Please consider tiping if you like it: BTC: 1PruQAwByDndFZ7vTeJhyWefAghaZx9RZg ETH: 0xb6418036d8E06c60C4D91c17d72Df6e1e5b15CE6 LTC: LY6CdZcDbxnBX9GFBJ45TqVj8NykBBqsmT panoramisk-1.4/bootstrap.py0000755000175000017500000001417614103000544016334 0ustar gawelgawel00000000000000############################################################################## # # Copyright (c) 2006 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Bootstrap a buildout-based project Simply run this script in a directory containing a buildout.cfg. The script accepts buildout command-line options, so you can use the -c option to specify an alternate configuration file. """ import os import shutil import sys import tempfile from optparse import OptionParser tmpeggs = tempfile.mkdtemp() usage = '''\ [DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] Bootstraps a buildout-based project. Simply run this script in a directory containing a buildout.cfg, using the Python that you want bin/buildout to use. Note that by using --find-links to point to local resources, you can keep this script from going over the network. ''' parser = OptionParser(usage=usage) parser.add_option("-v", "--version", help="use a specific zc.buildout version") parser.add_option("-t", "--accept-buildout-test-releases", dest='accept_buildout_test_releases', action="store_true", default=False, help=("Normally, if you do not specify a --version, the " "bootstrap script and buildout gets the newest " "*final* versions of zc.buildout and its recipes and " "extensions for you. If you use this flag, " "bootstrap and buildout will get the newest releases " "even if they are alphas or betas.")) parser.add_option("-c", "--config-file", help=("Specify the path to the buildout configuration " "file to be used.")) parser.add_option("-f", "--find-links", help=("Specify a URL to search for buildout releases")) parser.add_option("--allow-site-packages", action="store_true", default=False, help=("Let bootstrap.py use existing site packages")) parser.add_option("--setuptools-version", help="use a specific setuptools version") options, args = parser.parse_args() ###################################################################### # load/install setuptools if options.allow_site_packages: import setuptools import pkg_resources from urllib.request import urlopen ez = {} exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) if not options.allow_site_packages: # ez_setup imports site, which adds site packages # this will remove them from the path to ensure that incompatible versions # of setuptools are not in the path import site # inside a virtualenv, there is no 'getsitepackages'. # We can't remove these reliably if hasattr(site, 'getsitepackages'): for sitepackage_path in site.getsitepackages(): sys.path[:] = [x for x in sys.path if sitepackage_path not in x] setup_args = dict(to_dir=tmpeggs, download_delay=0) if options.setuptools_version is not None: setup_args['version'] = options.setuptools_version ez['use_setuptools'](**setup_args) import setuptools import pkg_resources # This does not (always?) update the default working set. We will # do it. for path in sys.path: if path not in pkg_resources.working_set.entries: pkg_resources.working_set.add_entry(path) ###################################################################### # Install buildout ws = pkg_resources.working_set cmd = [sys.executable, '-c', 'from setuptools.command.easy_install import main; main()', '-mZqNxd', tmpeggs] find_links = os.environ.get( 'bootstrap-testing-find-links', options.find_links or ('http://downloads.buildout.org/' if options.accept_buildout_test_releases else None) ) if find_links: cmd.extend(['-f', find_links]) setuptools_path = ws.find( pkg_resources.Requirement.parse('setuptools')).location requirement = 'zc.buildout' version = options.version if version is None and not options.accept_buildout_test_releases: # Figure out the most recent final version of zc.buildout. import setuptools.package_index _final_parts = '*final-', '*final' def _final_version(parsed_version): for part in parsed_version: if (part[:1] == '*') and (part not in _final_parts): return False return True index = setuptools.package_index.PackageIndex( search_path=[setuptools_path]) if find_links: index.add_find_links((find_links,)) req = pkg_resources.Requirement.parse(requirement) if index.obtain(req) is not None: best = [] bestv = None for dist in index[req.project_name]: distv = dist.parsed_version if _final_version(distv): if bestv is None or distv > bestv: best = [dist] bestv = distv elif distv == bestv: best.append(dist) if best: best.sort() version = best[-1].version if version: requirement = '=='.join((requirement, version)) cmd.append(requirement) import subprocess if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0: raise Exception( "Failed to execute command:\n%s" % repr(cmd)[1:-1]) ###################################################################### # Import and run buildout ws.add_entry(tmpeggs) ws.require(requirement) import zc.buildout.buildout if not [a for a in args if '=' not in a]: args.append('bootstrap') # if -c was provided, we push it back into args for buildout' main function if options.config_file is not None: args[0:0] = ['-c', options.config_file] zc.buildout.buildout.main(args) shutil.rmtree(tmpeggs) panoramisk-1.4/buildout.cfg0000644000175000017500000000043714103000544016245 0ustar gawelgawel00000000000000[buildout] newest = false extensions = gp.vcsdevelop #vcs-extends-develop = parts = eggs develop = . [eggs] recipe = zc.recipe.egg eggs = Sphinx panoramisk interpreter = py [tests] recipe = zc.recipe.egg eggs = panoramisk[test] dependent-scripts = true scripts = nosetests panoramisk-1.4/docs/0000755000175000017500000000000014103000545014662 5ustar gawelgawel00000000000000panoramisk-1.4/docs/Makefile0000644000175000017500000001271414103000544016326 0ustar gawelgawel00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/panoramisk.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/panoramisk.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/panoramisk" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/panoramisk" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." panoramisk-1.4/docs/actions.rst0000644000175000017500000000027414103000544017056 0ustar gawelgawel00000000000000========================= :mod:`panoramisk.actions` ========================= .. automodule:: panoramisk.actions .. autoclass:: Action :members: .. autoclass:: Command :members: panoramisk-1.4/docs/conf.py0000755000175000017500000001736614103000544016200 0ustar gawelgawel00000000000000# -*- coding: utf-8 -*- # # panoramisk documentation build configuration file, created by # sphinx-quickstart on Thu Jan 9 12:06:32 2014. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'panoramisk' copyright = u'2014, Gael Pasgrimaud' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '' # The full version, including alpha/beta/rc tags. release = '' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'panoramiskdoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'panoramisk.tex', u'panoramisk Documentation', u'Gael Pasgrimaud', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'panoramisk', u'panoramisk Documentation', [u'Gael Pasgrimaud'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'panoramisk', u'panoramisk Documentation', u'Gael Pasgrimaud', 'panoramisk', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' html_theme = 'nature' import pkg_resources version = pkg_resources.get_distribution("panoramisk").version release = version panoramisk-1.4/docs/conftest.py0000644000175000017500000000014114103000544017054 0ustar gawelgawel00000000000000# -*- coding: utf-8 -*- import pytest @pytest.fixture def inject_file(): return __file__ panoramisk-1.4/docs/fast_agi.rst0000644000175000017500000000031414103000544017166 0ustar gawelgawel00000000000000:mod:`panoramisk.fast_agi` - Fast AGI ===================================== An API to create Fast AGI applications API --- .. automodule:: panoramisk.fast_agi .. autoclass:: Application :members: panoramisk-1.4/docs/index.rst0000644000175000017500000000270614103000544016527 0ustar gawelgawel00000000000000.. panoramisk documentation master file, created by sphinx-quickstart on Thu Jan 9 12:06:32 2014. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. .. include:: ../README.rst ============= Installation ============= Install, upgrade and uninstall panoramisk with these commands: .. code-block:: sh $ pip install panoramisk $ pip install --upgrade panoramisk $ pip uninstall panoramisk ======================== Detailed Documentation ======================== .. toctree:: :maxdepth: 1 manager.rst fast_agi.rst testing.rst =================================== Who use Panoramisk on production ? =================================== For now, mainly `Eyepea `_ and `ALLOcloud `_. You shouldn't know theses companies, however, Eyepea is a provider of several famous European companies and governments organizations. You can check their references on their website: * http://www.eyepea.eu/customers * http://www.eyepea.eu/company/news Moreover, ALLOcloud is a cloud solution for SMEs, it handles several millions of calls by month. If you also use Panoramisk on production, don't hesitate to open a pull request to add your company's name with some details. ======= CHANGES ======= .. include:: ../CHANGES.rst ================== Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` panoramisk-1.4/docs/manager.rst0000644000175000017500000000072714103000544017033 0ustar gawelgawel00000000000000:mod:`panoramisk` - AMI ======================== An API to communicate with Asterisk's AMI Configure Asterisk -------------------------- In ``/etc/asterisk/manager.conf``, add: .. code-block:: ini [username] secret=password deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.255 read = all write = all Launch: .. code-block:: sh $ rasterisk -x 'manager reload' API --- .. automodule:: panoramisk .. autoclass:: Manager :members: panoramisk-1.4/docs/message.rst0000644000175000017500000000022714103000544017040 0ustar gawelgawel00000000000000========================= :mod:`panoramisk.message` ========================= .. automodule:: panoramisk.message .. autoclass:: Message :members: panoramisk-1.4/docs/testing.rst0000644000175000017500000000114614103000544017072 0ustar gawelgawel00000000000000========================================== :mod:`panoramisk.testing` - Writing tests ========================================== .. >>> import os >>> stream = os.path.join('tests', 'fixtures', 'ping.yaml') .. code-block:: python >>> from panoramisk import testing >>> manager = testing.Manager(stream=stream) # stream is a filename contaning an Asterisk trace >>> future = manager.send_action({'Action': 'Ping'}) >>> resp = future.result() >>> assert 'ping' in resp >>> assert resp.ping == 'Pong' API --- .. automodule:: panoramisk.testing .. autoclass:: Manager :members: panoramisk-1.4/examples/0000755000175000017500000000000014103000545015550 5ustar gawelgawel00000000000000panoramisk-1.4/examples/config.ini0000644000175000017500000000007414103000544017516 0ustar gawelgawel00000000000000[asterisk] host=127.0.0.1 username=username secret=mysecret panoramisk-1.4/examples/event_listener.py0000644000175000017500000000155714103000544021157 0ustar gawelgawel00000000000000import asyncio from panoramisk import Manager manager = Manager(loop=asyncio.get_event_loop(), host='ip', username='user', secret='secret') @manager.register_event('*') def callback(manager, message): if "FullyBooted" not in message.event: """This will print every event, but the FullyBooted events as these will continuously spam your screen""" print(message) """ # This will print NewChannel Events @manager.register_event('NewChannel') def callback(manager, message): print(message) # This will print Hangup Events @manager.register_event('Hangup') def callback(manager, message): print(message) """ def main(): manager.connect() try: manager.loop.run_forever() except KeyboardInterrupt: manager.loop.close() if __name__ == '__main__': main() panoramisk-1.4/examples/event_listener_modern.py0000644000175000017500000000332214103000544022513 0ustar gawelgawel00000000000000import asyncio import logging import os from panoramisk import Manager, Message manager = Manager( host=os.getenv('AMI_HOST', '127.0.0.1'), port=os.getenv('AMI_PORT', 5038), username=os.getenv('AMI_USERNAME', 'user'), secret=os.getenv('AMI_SECRET', 'password'), ping_delay=10, # Delay after start ping_interval=10, # Periodically ping AMI (dead or alive) reconnect_timeout=2, # Timeout reconnect if connection lost ) def on_connect(mngr: Manager): logging.info( 'Connected to %s:%s AMI socket successfully' % (mngr.config['host'], mngr.config['port']) ) def on_login(mngr: Manager): logging.info( 'Connected user:%s to AMI %s:%s successfully' % (mngr.config['username'], mngr.config['host'], mngr.config['port']) ) def on_disconnect(mngr: Manager, exc: Exception): logging.info( 'Disconnect user:%s from AMI %s:%s' % (mngr.config['username'], mngr.config['host'], mngr.config['port']) ) logging.debug(str(exc)) async def on_startup(mngr: Manager): await asyncio.sleep(0.1) logging.info('Something action...') async def on_shutdown(mngr: Manager): await asyncio.sleep(0.1) logging.info( 'Shutdown AMI connection on %s:%s' % (mngr.config['host'], mngr.config['port']) ) @manager.register_event('*') # Register all events async def ami_callback(mngr: Manager, msg: Message): if msg.Event == 'FullyBooted': print(msg) if __name__ == '__main__': logging.basicConfig(level=logging.INFO) manager.on_connect = on_connect manager.on_login = on_login manager.on_disconnect = on_disconnect manager.connect(run_forever=True, on_startup=on_startup, on_shutdown=on_shutdown) panoramisk-1.4/examples/fast_agi_server.py0000644000175000017500000000164614103000544021273 0ustar gawelgawel00000000000000from pprint import pprint import asyncio from panoramisk import fast_agi loop = asyncio.get_event_loop() async def call_waiting(request): pprint(['AGI variables:', request.headers]) pprint((await request.send_command('ANSWER'))) pprint((await request.send_command('EXEC StartMusicOnHold'))) pprint((await request.send_command('EXEC Wait 30'))) def main(): fa_app = fast_agi.Application(loop=loop) fa_app.add_route('call_waiting', call_waiting) coro = asyncio.start_server(fa_app.handler, '0.0.0.0', 4574, loop=loop) server = loop.run_until_complete(coro) # Serve requests until CTRL+c is pressed print('Serving on {}'.format(server.sockets[0].getsockname())) try: loop.run_forever() except KeyboardInterrupt: pass # Close the server server.close() loop.run_until_complete(server.wait_closed()) loop.close() if __name__ == '__main__': main() panoramisk-1.4/examples/fast_agi_server_ivr.py0000644000175000017500000000257714103000544022157 0ustar gawelgawel00000000000000from pprint import pprint import asyncio from panoramisk import fast_agi loop = asyncio.get_event_loop() async def call_waiting(request): pprint(['AGI variables:', request.headers]) pprint((await request.send_command('ANSWER'))) pprint((await request.send_command('SAY DIGITS 1 \"\"'))) # To Raise a 510 error - 510 Invalid or unknown command pprint((await request.send_command('INVALID-COMMAND'))) # To Raise a 520 error - 520-Invalid command syntax. Proper usage follows: pprint((await request.send_command('SAY PHONETIC Hello world .'))) pprint((await request.send_command('SAY NUMBER 100 \"\"'))) pprint((await request.send_command('GET DATA hello-world 5000 2'))) pprint((await request.send_command('EXEC StartMusicOnHold'))) pprint((await request.send_command('EXEC Wait 30'))) def main(): fa_app = fast_agi.Application(loop=loop) fa_app.add_route('call_waiting', call_waiting) coro = asyncio.start_server(fa_app.handler, '0.0.0.0', 4574, loop=loop) server = loop.run_until_complete(coro) # Serve requests until CTRL+c is pressed print('Serving on {}'.format(server.sockets[0].getsockname())) try: loop.run_forever() except KeyboardInterrupt: pass # Close the server server.close() loop.run_until_complete(server.wait_closed()) loop.close() if __name__ == '__main__': main() panoramisk-1.4/examples/get_extension_status.py0000644000175000017500000000126014103000544022376 0ustar gawelgawel00000000000000from pprint import pprint import asyncio from panoramisk import Manager async def extension_status(): manager = Manager(loop=asyncio.get_event_loop(), host='127.0.0.1', port=5039, username='user', secret='password') await manager.connect() extension = await manager.send_action({'Action': 'ExtensionState', 'Exten': '2001', 'Context': 'default'}) manager.close() pprint(extension) def main(): loop = asyncio.get_event_loop() loop.run_until_complete(extension_status()) loop.close() if __name__ == '__main__': main() panoramisk-1.4/examples/originate.py0000644000175000017500000000203714103000544020104 0ustar gawelgawel00000000000000""" Example script to originate a call through Asterisk Manager Interface. Usage: python originate.py config.ini """ import sys import asyncio from panoramisk.call_manager import CallManager async def originate(): callmanager = CallManager.from_config(sys.argv[1]) await callmanager.connect() call = await callmanager.send_originate({ 'Action': 'Originate', 'Channel': 'Local/gpasgrimaud@bearstech', 'WaitTime': 20, 'CallerID': 'gawel', 'Exten': '1000', 'Context': 'ael-demo', 'Priority': 1}) print(call) while not call.queue.empty(): event = call.queue.get_nowait() print(event) while True: event = await call.queue.get() print(event) if event.event.lower() == 'hangup' and event.cause in ('0', '17'): break callmanager.clean_originate(call) callmanager.close() def main(): loop = asyncio.get_event_loop() loop.run_until_complete(originate()) loop.close() if __name__ == '__main__': main() panoramisk-1.4/examples/perpetual_ping.py0000644000175000017500000000132214103000544021135 0ustar gawelgawel00000000000000from pprint import pprint import asyncio from panoramisk import Manager import sys async def ping(lp, username, secret): manager = Manager(loop=lp, host='127.0.0.1', port=5038, username=username, secret=secret, forgetable_actions=('login',)) await manager.connect() while True: p = await manager.send_action({'Action': 'ping'}) # p = await manager.send_action({'Action': 'SIPpeers'}) pprint(p) await asyncio.sleep(1) manager.close() def main(): loop = asyncio.get_event_loop() loop.run_until_complete(ping(loop, sys.argv[1], sys.argv[2])) loop.close() if __name__ == '__main__': main() panoramisk-1.4/examples/queue_status.py0000644000175000017500000000112614103000544020650 0ustar gawelgawel00000000000000import asyncio from panoramisk import Manager from pprint import pprint async def queue_status(): manager = Manager(loop=asyncio.get_event_loop(), host='127.0.0.1', port=5039, username='username', secret='mysecret') await manager.connect() queues_details = await manager.send_action( {'Action': 'QueueStatus', 'Queue': 'queue_name'}) manager.close() pprint(queues_details) def main(): loop = asyncio.get_event_loop() loop.run_until_complete(queue_status()) loop.close() if __name__ == '__main__': main() panoramisk-1.4/panoramisk/0000755000175000017500000000000014103000545016076 5ustar gawelgawel00000000000000panoramisk-1.4/panoramisk/__init__.py0000644000175000017500000000022714103000544020207 0ustar gawelgawel00000000000000from .manager import Manager # NOQA from .message import Message # NOQA from .call_manager import CallManager # NOQA from . import fast_agi # NOQA panoramisk-1.4/panoramisk/actions.py0000644000175000017500000000730014103000544020107 0ustar gawelgawel00000000000000import asyncio from . import utils class Action(utils.CaseInsensitiveDict): """Dict like object to handle actions. Generate action IDs for you: .. >>> utils.IdGenerator.reset('myuuid') .. code-block:: python >>> action = Action({'Action': 'Status'}) >>> print(action) # doctest: +NORMALIZE_WHITESPACE Action: Status ActionID: action/myuuid/1/1 >>> action = Action({'Action': 'SIPnotify', ... 'Variable': ['1', '2']}) >>> print(action) # doctest: +NORMALIZE_WHITESPACE Action: SIPnotify ActionID: action/myuuid/1/2 Variable: 1 Variable: 2 """ action_id_generator = utils.IdGenerator('action') def __init__(self, *args, **kwargs): self.as_list = kwargs.pop('as_list', None) super(Action, self).__init__(*args, **kwargs) if 'actionid' not in self: self['ActionID'] = self.action_id_generator() self.responses = [] self.future = asyncio.Future() @property def id(self): return self.actionid action_id = id def __str__(self): action = [] for k, v in sorted(self.items()): if isinstance(v, (list, tuple)): action.extend(['%s: %s' % (k, i) for i in v]) else: action.append('%s: %s' % (k, v)) action.append(utils.EOL) return utils.EOL.join(action) @property def multi(self): resp = self.responses[0] msg = resp.message.lower() if self.as_list is not None: return bool(self.as_list) elif resp.subevent == 'Start': return True elif 'EventList' in resp and resp['EventList'] == 'start': return True elif 'will follow' in msg: return True elif msg.startswith('added') and msg.endswith('to queue'): return True elif msg.endswith('successfully queued') and self['async'] != 'false': return True return False @property def completed(self): resp = self.responses[-1] if resp.event.endswith('Complete'): return True elif resp.subevent in ('End', 'Exec'): return True elif resp.response in ('Success', 'Error', 'Fail', 'Failure'): return True elif not self.multi: return True return False def add_message(self, message): self.responses.append(message) multi = self.multi if self.completed and not self.future.done(): if multi and len(self.responses) > 1: self.future.set_result(self.responses) elif not multi: self.future.set_result(self.responses[0]) else: return False return True class Command(Action): """Dict like object to handle Commands. Generate action/command IDs for you: .. >>> utils.IdGenerator.reset('myuuid') .. code-block:: python >>> command = Command({'Command' : 'Do something'}) >>> print(command) # doctest: +NORMALIZE_WHITESPACE Action: Command ActionID: action/myuuid/1/1 Command: Do something CommandID: command/myuuid/1/1 """ command_id_generator = utils.IdGenerator('command') def __init__(self, *args, **kwargs): super(Command, self).__init__(*args, **kwargs) if 'action' not in self: self['Action'] = 'Command' if 'commandid' not in self: self['CommandID'] = self.command_id_generator() @property def id(self): return self.commandid @property def action_id(self): return self.actionid or None panoramisk-1.4/panoramisk/ami_protocol.py0000644000175000017500000001053314103000544021140 0ustar gawelgawel00000000000000import logging import asyncio from collections import deque from .message import Message from . import actions from . import utils class AMIProtocol(asyncio.Protocol): def connection_made(self, transport): self.transport = transport self.closed = False self.queue = deque() self.responses = {} self.factory = None self.version = None self.log = logging.getLogger(__name__) def send(self, data, as_list=False): encoding = getattr(self, 'encoding', 'ascii') if not isinstance(data, actions.Action): if 'Command' in data: klass = actions.Command else: klass = actions.Action data = klass(data, as_list=as_list) data.as_list = as_list self.responses[data.id] = data if data.action_id: self.responses[data.action_id] = data try: self.transport.write(str(data).encode(encoding)) except Exception: # pragma: no cover self.log.exception('Fail to send %r' % data) return data.future def data_received(self, data): encoding = getattr(self, 'encoding', 'ascii') data = data.decode(encoding, 'ignore') if getattr(self.factory, 'save_stream', None): # pragma: no cover stream = self.factory.save_stream if hasattr(stream, 'write'): stream.write(data.encode(encoding)) else: with open(stream, 'a+') as fd: fd.write(data.encode(encoding)) # Very verbose, uncomment only if necessary # self.log.debug('data received: "%s"', data) if self.version is None: if data.startswith('Asterisk Call Manager/'): version, __, __ = data.partition(utils.EOL) __, __, version = version.partition('/') self.version = version.strip() self.log.info("protocol version: '%s'", self.version) if self.queue: data = self.queue.popleft() + data lines = data.split(utils.EOL+utils.EOL) self.queue.append(lines.pop(-1)) for line in lines: # Because sometimes me receive only one EOL from Asterisk line = line.strip() # Very verbose, uncomment only if necessary # self.log.debug('message received: "%s"', line) message = Message.from_line(line) self.log.debug('message interpreted: %r', message) if message is None: continue self.handle_message(message) def handle_message(self, message): response = self.responses.get(message.id) if response is None and message.action_id: response = self.responses.get(message.action_id) if response is not None: if response.add_message(message): # completed; dequeue self.responses.pop(response.id) if response.action_id: self.responses.pop(response.action_id, None) elif 'event' in message: if message['event'].lower() == 'shutdown': self.connection_lost(message) self.factory.dispatch(message) def connection_lost(self, exc): if not self.closed: self.close() self.factory.connection_lost(exc) def close(self): if self.factory and self.responses: uuids = set() forgetable_actions = self.factory.forgetable_actions awaiting_actions = self.factory.awaiting_actions for k in list(self.responses.keys()): action = self.responses.pop(k) uuids.add(action.id) if action['action'].lower() in forgetable_actions: continue elif action.future.done(): # pragma: no cover continue elif action.responses: # If at least one response was receive from asterisk we don't queue it again continue else: self.log.info('Adding action "%s" to awaiting list: %s', action['action'].lower(), str(action)) awaiting_actions.append(action) if not self.closed: try: self.transport.close() finally: self.closed = True panoramisk-1.4/panoramisk/call_manager.py0000644000175000017500000000340314103000544021054 0ustar gawelgawel00000000000000import asyncio from . import manager from . import actions from datetime import datetime from functools import partial class Call: def __init__(self, uniqueid): self.uniqueid = uniqueid self.action_id = None self.queue = asyncio.Queue() self.created_at = datetime.now() def append(self, *events): for e in events: self.queue.put_nowait(e) class CallManager(manager.Manager): def __init__(self, **config): super(CallManager, self).__init__(**config) self.CallClass = config.get('CallClass', Call) self.calls_queues = {} self.calls = {} self.register_event('*', self.handle_calls) def set_result(self, future, result): res = result.result() if isinstance(res, (list, tuple)): event = res[-1] else: event = res uniqueid = event.uniqueid.split('.', 1)[0] if uniqueid in self.calls_queues: call = self.calls_queues[uniqueid] else: call = Call(uniqueid) call.action_id = event.action_id if not future.done(): future.set_result(call) def send_originate(self, action): action['Async'] = 'true' action = actions.Action(action) future = asyncio.Future() self.send_action(action).add_done_callback( partial(self.set_result, future)) return future def clean_originate(self, call): self.calls_queues.pop(call.uniqueid, None) def handle_calls(self, manager, event): uniqueid = event.uniqueid or event.uniqueid1 if uniqueid: uniqueid = uniqueid.split('.', 1)[0] call = self.calls_queues.setdefault(uniqueid, Call(uniqueid)) call.append(event) panoramisk-1.4/panoramisk/command.py0000644000175000017500000000472414103000544020074 0ustar gawelgawel00000000000000import sys import asyncio import argparse import logging from . import utils from .call_manager import CallManager from .call_manager import Call try: import yaml except ImportError: yaml = None def main(argv=None): parser = argparse.ArgumentParser() if yaml is None: parser.error('You must install pyaml') parser.add_argument('-c', '--config', type=argparse.FileType('r'), required=True, help='Config ini file') parser.add_argument('-i', '--input', type=argparse.FileType('r'), help='Input yaml file') parser.add_argument('-o', '--output', type=argparse.FileType('w'), default='-', help='Stream output file (Default to STDOUT)') args = parser.parse_args(argv or sys.argv[1:]) config = utils.config(args.config) config['save_stream'] = args.output call_manager = CallManager(**config) task = call_manager.connect() logging.basicConfig(stream=sys.stderr, level=logging.INFO) logging.getLogger('asyncio').setLevel(logging.ERROR) log = logging.getLogger('panoramisk') def done(future): result = future.result() log.info('Got result: %r\n', result) if isinstance(result, Call): while not result.queue.empty(): print(result.queue.get_nowait()) def show(f=None): if f: print(f.result()) f = asyncio.Task(result.queue.get()) f.add_done_callback(show) show() def send_action(f): if args.input: action = yaml.load(args.input) if action.get('Action').lower() == 'originate': future = call_manager.send_originate(action) elif 'commandid' in [k.lower() for k in action.keys()]: future = call_manager.send_command(action) else: future = call_manager.send_action(action) log.info('Action %r sent', action) future.add_done_callback(done) def connected(f): if call_manager.authenticated_future is not None: call_manager.authenticated_future.add_done_callback(send_action) else: send_action(f) task.add_done_callback(connected) try: call_manager.loop.run_forever() except KeyboardInterrupt: args.output.close() panoramisk-1.4/panoramisk/fast_agi.py0000644000175000017500000001312014103000544020221 0ustar gawelgawel00000000000000import logging import asyncio from collections import OrderedDict from .utils import parse_agi_result log = logging.getLogger(__name__) class Request: def __init__(self, app, headers, reader, writer, encoding='utf-8'): self.app = app self.headers = headers self.reader = reader self.writer = writer self.encoding = encoding async def send_command(self, command): """Send a command for FastAGI request: :param command: Command to launch on FastAGI request. Ex: 'EXEC StartMusicOnHolds' :type command: String :Example: :: async def call_waiting(request): print(['AGI variables:', request.headers]) await request.send_command('ANSWER') await request.send_command('EXEC StartMusicOnHold') await request.send_command('EXEC Wait 10') """ command += '\n' self.writer.write(command.encode(self.encoding)) await self.writer.drain() agi_result = await self._read_result() # If Asterisk returns `100 Trying...`, wait for next the response. while agi_result.get('status_code') == 100: agi_result = await self._read_result() # when we got AGIUsageError the following line contains some indication if 'error' in agi_result and agi_result['error'] == 'AGIUsageError': buff_usage_error = await self.reader.readline() agi_result['msg'] += buff_usage_error.decode(self.encoding) return agi_result async def _read_result(self): """Parse read a response from the AGI and parse it. :return dict: The AGI response parsed into a dict. """ response = await self.reader.readline() return parse_agi_result(response.decode(self.encoding)[:-1]) class Application(dict): """Main object: .. code-block:: python >>> fa_app = Application() """ buf_size = 100 def __init__(self, default_encoding='utf-8', loop=None): super(Application, self).__init__() self.default_encoding = default_encoding if loop is None: loop = asyncio.get_event_loop() self.loop = loop self._route = OrderedDict() def add_route(self, path, endpoint): """Add a route for FastAGI requests: :param path: URI to answer. Ex: 'calls/start' :type path: String :param endpoint: command to launch. Ex: start :type endpoint: callable :Example: :: async def start(request): print('Receive a FastAGI request') print(['AGI variables:', request.headers]) fa_app = Application() fa_app.add_route('calls/start', start) """ assert callable(endpoint), endpoint if path in self._route: raise ValueError('A route already exists.') if not asyncio.iscoroutinefunction(endpoint): endpoint = asyncio.coroutine(endpoint) self._route[path] = endpoint def del_route(self, path): """Delete a route for FastAGI requests: :param path: URI to answer. Ex: 'calls/start' :type path: String :Example: :: async def start(request): print('Receive a FastAGI request') print(['AGI variables:', request.headers]) fa_app = Application() fa_app.add_route('calls/start', start) fa_app.del_route('calls/start') """ if path not in self._route: raise ValueError('This route doesn\'t exist.') del(self._route[path]) async def handler(self, reader, writer): """AsyncIO coroutine handler to launch socket listening. :Example: :: async def start(request): print('Receive a FastAGI request') print(['AGI variables:', request.headers]) fa_app = Application() fa_app.add_route('calls/start', start) coro = asyncio.start_server(fa_app.handler, '0.0.0.0', 4574) server = loop.run_until_complete(coro) See https://docs.python.org/3/library/asyncio-stream.html """ buffer = b'' while b'\n\n' not in buffer: buffer += await reader.read(self.buf_size) lines = buffer[:-2].decode(self.default_encoding).split('\n') headers = OrderedDict([ line.split(': ', 1) for line in lines if ': ' in line ]) agi_network_script = headers.get('agi_network_script') log.info('Received FastAGI request from %r for "%s" route', writer.get_extra_info('peername'), agi_network_script) log.debug("Asterisk Headers: %r", headers) if agi_network_script is not None: route = self._route.get(agi_network_script) if route is not None: request = Request(app=self, headers=headers, reader=reader, writer=writer, encoding=self.default_encoding) try: await route(request) except BaseException: log.exception( 'An exception has been raised for the request "%s"', agi_network_script ) else: log.error('No route for the request "%s"', agi_network_script) else: log.error('No agi_network_script header for the request') log.debug("Closing client socket") writer.close() panoramisk-1.4/panoramisk/manager.py0000644000175000017500000002534514103000544020072 0ustar gawelgawel00000000000000import asyncio import logging from collections import defaultdict from collections import deque import re import fnmatch from .ami_protocol import AMIProtocol from . import actions from . import utils class Manager: """Main object: .. code-block:: python >>> manager = Manager( ... host='127.0.0.1', ... port=5038, ... ssl=False, ... encoding='utf8') """ defaults = dict( host='127.0.0.1', port=5038, events='on', ssl=False, encoding='utf8', ping_delay=10, ping_interval=10, reconnect_timeout=2, protocol_factory=AMIProtocol, save_stream=None, loop=None, forgetable_actions=('ping', 'login'), ) def __init__(self, **config): self.config = dict(self.defaults, **config) self.loop = self.config['loop'] self.log = config.get('log', logging.getLogger(__name__)) self.callbacks = defaultdict(list) self.protocol = None self.patterns = [] self.save_stream = self.config.get('save_stream') self.authenticated = False self.authenticated_future = None self.awaiting_actions = deque() self.forgetable_actions = self.config['forgetable_actions'] self.pinger = None self.ping_delay = int(self.config['ping_delay']) self.ping_interval = int(self.config['ping_interval']) self.reconnect_timeout = int(self.config['reconnect_timeout']) self._connected = False self.register_event('FullyBooted', self.send_awaiting_actions) self.on_login = config.get('on_login', on_login) self.on_connect = config.get('on_connect', on_connect) self.on_disconnect = config.get('on_disconnect', on_disconnect) def connection_made(self, f): if getattr(self, 'protocol', None): self.protocol.close() try: transport, protocol = f.result() except OSError: # pragma: no cover if self._connected: self.log.exception('Not able to connect') self._connected = False else: self.log.warning('Not able to reconnect') self.loop.call_later(self.reconnect_timeout, self.connect) else: self._connected = True self.log.debug('Manager connected') self.loop.call_soon(self.on_connect, self) self.protocol = protocol self.protocol.queue = deque() self.protocol.factory = self self.protocol.log = self.log self.protocol.config = self.config self.protocol.encoding = self.encoding = self.config['encoding'] self.responses = self.protocol.responses = {} if 'username' in self.config: self.authenticated = False self.authenticated_future = self.send_action({ 'Action': 'Login', 'Username': self.config['username'], 'Secret': self.config['secret'], 'Events': self.config['events']}) self.authenticated_future.add_done_callback(self.login) else: self.log.debug('username not in config file') self.pinger = self.loop.call_later(self.ping_delay, self.ping) def login(self, future): self.authenticated_future = None resp = future.result() self.authenticated = bool(resp.success) if self.authenticated: self.loop.call_soon(self.on_login, self) if self.pinger is not None: self.pinger.cancel() self.pinger = self.loop.call_later(self.ping_delay, self.ping) return self.authenticated def ping(self): # pragma: no cover self.pinger = self.loop.call_later(self.ping_interval, self.ping) self.protocol.send({'Action': 'Ping'}) async def send_awaiting_actions(self, *_): self.log.info('Sending awaiting actions') while self.awaiting_actions: action = self.awaiting_actions.popleft() if action['action'].lower() not in self.forgetable_actions: if not action.future.done(): self.send_action(action, as_list=action.as_list) def send_action(self, action, as_list=None, **kwargs): """Send an :class:`~panoramisk.actions.Action` to the server: :param action: an Action or dict with action name and parameters to send :type action: Action or dict or Command :param as_list: If True, the action Future will retrieve all responses :type as_list: boolean :return: a Future that will receive the response :rtype: asyncio.Future :Example: To retrieve answer in a coroutine:: manager = Manager() resp = await manager.send_action({'Action': 'Status'}) With a callback:: manager = Manager() future = manager.send_action({'Action': 'Status'}) future.add_done_callback(handle_status_response) See https://wiki.asterisk.org/wiki/display/AST/AMI+Actions for more information on actions """ action.update(kwargs) return self.protocol.send(action, as_list=as_list) def send_command(self, command, as_list=False): """Send a :class:`~panoramisk.actions.Command` to the server:: manager = Manager() resp = manager.send_command('http show status') Return a response :class:`~panoramisk.message.Message`. See https://wiki.asterisk.org/wiki/display/AST/ManagerAction_Command """ action = actions.Action({'Command': command, 'Action': 'Command'}, as_list=as_list) return self.send_action(action) def send_agi_command(self, channel, command, as_list=False): """Send a :class:`~panoramisk.actions.Command` to the server: :param channel: Channel name where to launch command. Ex: 'SIP/000000-00000a53' :type channel: String :param command: command to launch. Ex: 'GET VARIABLE async_agi_server' :type command: String :param as_list: If True, the action Future will retrieve all responses :type as_list: boolean :return: a Future that will receive the response :rtype: asyncio.Future :Example: :: manager = Manager() resp = manager.send_agi_command('SIP/000000-00000a53', 'GET VARIABLE async_agi_server') Return a response :class:`~panoramisk.message.Message`. See https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+ManagerAction_AGI """ action = actions.Command({'Action': 'AGI', 'Channel': channel, 'Command': command}, as_list=as_list) return self.send_action(action) def connect(self, run_forever=False, on_startup=None, on_shutdown=None): """connect to the server""" if self.loop is None: # pragma: no cover self.loop = asyncio.get_event_loop() t = asyncio.Task( self.loop.create_connection( self.config['protocol_factory'], self.config['host'], self.config['port'], ssl=self.config['ssl']), loop=self.loop) t.add_done_callback(self.connection_made) if run_forever: self.run_forever(on_startup, on_shutdown) return t def run_forever(self, on_startup, on_shutdown): """Start loop forever""" try: if on_startup: self.loop.run_until_complete(on_startup(self)) self.loop.run_forever() except (KeyboardInterrupt, SystemExit): self.close() finally: if on_shutdown: self.loop.run_until_complete(on_shutdown(self)) self.loop.stop() def register_event(self, pattern, callback=None): """register an event. See :class:`~panoramisk.message.Message`: .. code-block:: python >>> def callback(manager, event): ... print(manager, event) >>> manager = Manager() >>> manager.register_event('Meetme*', callback) You can also use the manager as a decorator: .. code-block:: python >>> manager = Manager() >>> @manager.register_event('Meetme*') ... def callback(manager, event): ... print(manager, event) """ def _register_event(callback): if not self.callbacks[pattern]: self.patterns.append((pattern, re.compile(fnmatch.translate(pattern)))) self.callbacks[pattern].append(callback) return callback if callback is not None: return _register_event(callback) else: return _register_event def dispatch(self, event): matches = [] event.manager = self for pattern, regexp in self.patterns: match = regexp.match(event.event) if match is not None: matches.append(pattern) for callback in self.callbacks[pattern]: ret = callback(self, event) if (asyncio.iscoroutine(ret) or isinstance(ret, asyncio.Future)): asyncio.ensure_future(ret, loop=self.loop) return matches def close(self): """Close the connection""" if self.pinger: self.pinger.cancel() self.pinger = None if getattr(self, 'protocol', None): self.protocol.close() def connection_lost(self, exc): self._connected = False self.log.error('Connection lost') self.loop.call_soon(self.on_disconnect, self, exc) if self.pinger: self.pinger.cancel() self.pinger = None self.log.info('Try to connect again in %d second(s)' % self.reconnect_timeout) self.loop.call_later(self.reconnect_timeout, self.connect) @classmethod def from_config(cls, filename_or_fd, section='asterisk', **kwargs): config = utils.config(filename_or_fd, section=section) config.update(kwargs) return cls(**config) # noinspection PyUnusedLocal def on_connect(manager: Manager): """ Callback after connect """ pass # noinspection PyUnusedLocal def on_login(manager: Manager): """ Callback after login """ pass # noinspection PyUnusedLocal def on_disconnect(manager: Manager, exc: Exception): """ Callback after disconnect """ pass panoramisk-1.4/panoramisk/message.py0000644000175000017500000001012714103000544020074 0ustar gawelgawel00000000000000from . import utils from urllib.parse import unquote class Message(utils.CaseInsensitiveDict): """Handle both Responses and Events with the same api: .. >>> resp = Message({'Response': 'Follows'}, 'Response body') >>> event = Message({'Event': 'MeetmeEnd', 'Meetme': '4242'}) Responses: .. code-block:: python >>> bool(resp.success) True >>> resp >>> print(resp.content) Response body >>> for line in resp.iter_lines(): ... print(resp.content) Response body Events: .. code-block:: python >>> print(event['meetme']) 4242 >>> print(event.meetme) 4242 >>> event.unknown_header '' """ quoted_keys = ['result'] success_responses = ['Success', 'Follows', 'Goodbye'] def __init__(self, headers, content=''): super(Message, self).__init__(headers, content=content) self.manager = None @property def id(self): if 'commandid' in self: return self['commandid'] elif 'actionid' in self: return self['actionid'] return None @property def action_id(self): if 'actionid' in self: return self['actionid'] return None @property def success(self): """return True if a response status is Success or Follows: .. code-block:: python >>> resp = Message({'Response': 'Success'}) >>> print(resp.success) True >>> resp['Response'] = 'Failed' >>> resp.success False """ if 'event' in self: return True if self.response in self.success_responses: return True return False def __repr__(self): message = ' '.join(['%s=%r' % i for i in sorted(self.items())]) return ''.format(message) def iter_lines(self): """Iter over response body""" for line in self.content.split('\n'): yield line def parsed_result(self): """Get parsed result of AGI command""" if 'Result' in self: return utils.parse_agi_result(self['Result']) else: raise ValueError('No result in %r' % self) def getdict(self, key): """Convert a multi values header to a case-insensitive dict: .. code-block:: python >>> resp = Message({ ... 'Response': 'Success', ... 'ChanVariable': [ ... 'FROM_DID=', 'SIPURI=sip:42@10.10.10.1:4242'], ... }) >>> print(resp.chanvariable) ['FROM_DID=', 'SIPURI=sip:42@10.10.10.1:4242'] >>> value = resp.getdict('chanvariable') >>> print(value['sipuri']) sip:42@10.10.10.1:4242 """ values = self.get(key, None) if not isinstance(values, list): raise TypeError("{0} must be a list. got {1}".format(key, values)) result = utils.CaseInsensitiveDict() for item in values: k, v = item.split('=', 1) result[k] = v return result @classmethod def from_line(cls, line): mlines = line.split(utils.EOL) headers = {} content = '' has_body = ('Response: Follows', 'Response: Fail') if mlines[0].startswith(has_body): content = mlines.pop() while not content and mlines: content = mlines.pop() for mline in mlines: if ': ' in mline: k, v = mline.split(': ', 1) if k.lower() in cls.quoted_keys: v = unquote(v).strip() if k in headers: o = headers.setdefault(k, []) if not isinstance(o, list): o = [o] o.append(v) headers[k] = o else: headers[k] = v if 'Event' in headers or 'Response' in headers: return cls(headers, content) panoramisk-1.4/panoramisk/testing.py0000644000175000017500000000343014103000544020124 0ustar gawelgawel00000000000000from __future__ import unicode_literals import asyncio from unittest import mock from . import manager from . import utils MagicMock = mock.MagicMock patch = mock.patch call = mock.call class AMIProtocol(manager.AMIProtocol): debug_count = [0] def connection_made(self, transport): super(AMIProtocol, self).connection_made(transport) self.transport = MagicMock() def send(self, data, as_list=False): utils.IdGenerator.reset(uid='transaction_uid') future = super(AMIProtocol, self).send(data, as_list=as_list) if getattr(self.factory, 'stream', None) is not None: with open(self.factory.stream, 'rb') as fd: for resp in fd.read().split(b'\n\n'): self.data_received(resp + b'\n\n') if future.done(): break if not future.done(): # pragma: no cover print(self.responses) raise AssertionError("Future's result was never set") return future class Manager(manager.Manager): fixtures_dir = None defaults = manager.Manager.defaults.copy() def __init__(self, **config): self.defaults.update( protocol_factory=AMIProtocol, stream=None) super(Manager, self).__init__(**config) self.stream = self.config.get('stream') if self.loop is None: self.loop = asyncio.get_event_loop() protocol = AMIProtocol() protocol.factory = manager protocol.connection_made(mock.MagicMock()) future = asyncio.Future() future.set_result((mock.MagicMock(), protocol)) self.protocol = protocol self.connection_made(future) utils.IdGenerator.reset(uid='transaction_uid') utils.EOL = '\n' panoramisk-1.4/panoramisk/utils.py0000644000175000017500000001345114103000544017613 0ustar gawelgawel00000000000000import re import uuid try: from collections.abc import MutableMapping except ImportError: from collections import MutableMapping from configparser import ConfigParser EOL = '\r\n' re_code = re.compile(r'(?P^\d*)\s*(?P.*)') re_kv = re.compile(r'(?P\w+)=(?P[^\s]+)\s*(?:\((?P.*)\))*') def parse_agi_result(line): """Parse AGI results using Regular expression. AGI Result examples:: 100 result=0 Trying... 200 result=0 200 result=-1 200 result=132456 200 result= (timeout) 510 Invalid or unknown command 520-Invalid command syntax. Proper usage follows: int() argument must be a string, a bytes-like object or a number, not 'NoneType' HANGUP """ # print("--------------\n", line) if line == 'HANGUP': return {'error': 'AGIResultHangup', 'msg': 'User hungup during execution'} kwargs = dict(code=0, response="", line=line) m = re_code.search(line) try: kwargs.update(m.groupdict()) except AttributeError: # None has no attribute groupdict pass return agi_code_check(**kwargs) def agi_code_check(code=None, response=None, line=None): """ Check the AGI code and return a dict to help on error handling. """ code = int(code) response = response or "" result = {'status_code': code, 'result': ('', ''), 'msg': ''} if code == 100: result['msg'] = line elif code == 200: for key, value, data in re_kv.findall(response): result[key] = (value, data) # If user hangs up... we get 'hangup' in the data if data == 'hangup': return { 'error': 'AGIResultHangup', 'msg': 'User hungup during execution'} elif key == 'result' and value == '-1': return { 'error': 'AGIAppError', 'msg': 'Error executing application, or hangup'} elif code == 510: result['error'] = 'AGIInvalidCommand' elif code == 520: # AGI Usage error result['error'] = 'AGIUsageError' result['msg'] = line else: # Unhandled code or undefined response result['error'] = 'AGIUnknownError' result['msg'] = line return result class IdGenerator: """Generate some uuid for actions: .. code-block:: python >>> g = IdGenerator('mycounter') .. >>> IdGenerator.reset(uid='an_uuid4') It increments the counter at each calls: .. code-block:: python >>> print(g()) mycounter/an_uuid4/1/1 >>> print(g()) mycounter/an_uuid4/1/2 """ instances = [] def __init__(self, prefix): self.instances.append(self) self.prefix = prefix self.uid = str(uuid.uuid4()) self.generator = self.get_generator() def get_generator(self): i = 0 max_val = 10000 while True: yield "%s/%s/%d/%d" % (self.prefix, self.uid, (i // max_val) + 1, (i % max_val) + 1) i += 1 @classmethod def reset(cls, uid=None): """Mostly used for unit testing. Allow to use a static uuid and reset all counter""" for instance in cls.instances: if uid: instance.uid = uid instance.generator = instance.get_generator() def get_instances(self): """Mostly used for debugging""" return ["<%s prefix:%s (uid:%s)>" % (self.__class__.__name__, i.prefix, self.uid) for i in self.instances] def __call__(self): return next(self.generator) def __repr__(self): return "<%s prefix:%s (uid:%s)>" % (self.__class__.__name__, self.prefix, self.uid) class CaseInsensitiveDict(MutableMapping): """ A case-insensitive ``dict``-like object. Implements all methods and operations of ``collections.MutableMapping``. All keys are expected to be strings. The structure remembers the case of the last key to be set, and ``iter(instance)``, ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()`` will contain case-sensitive keys. However, querying and contains testing is case insensitive: .. code-block:: python cid = CaseInsensitiveDict() cid['Action'] = 'SIPnotify' cid['aCTION'] == 'SIPnotify' # True list(cid) == ['Action'] # True For example, ``event['actionid']`` will return the value of a ``'ActionID'`` response event, regardless of how the event name was originally stored. """ def __init__(self, data=None, **kwargs): self._store = dict() self.update(data or {}, **kwargs) def __setitem__(self, key, value): # Use the lowercased key for lookups, but store the actual # key alongside the value. self._store[key.lower()] = (key, value) def __contains__(self, key): return key.lower() in self._store def __getattr__(self, attr): return self.get(attr, '') def __getitem__(self, key): return self._store[key.lower()][1] def __delitem__(self, key): raise NotImplementedError() def __iter__(self): return (key for key, value in self._store.values()) def __len__(self): return len(self._store) def __repr__(self): return str(dict(self.items())) def config(filename_or_fd, section='asterisk'): config = ConfigParser() if hasattr(filename_or_fd, 'read'): if hasattr(config, 'read_file'): config.read_file(filename_or_fd) else: config.readfp(filename_or_fd) else: config.read(filename_or_fd) return dict(config.items(section)) panoramisk-1.4/panoramisk.egg-info/0000755000175000017500000000000014103000545017570 5ustar gawelgawel00000000000000panoramisk-1.4/panoramisk.egg-info/PKG-INFO0000644000175000017500000000610014103000545020662 0ustar gawelgawel00000000000000Metadata-Version: 2.1 Name: panoramisk Version: 1.4 Summary: asyncio based library to play with asterisk Home-page: https://github.com/gawel/panoramisk/ Author: Gael Pasgrimaud Author-email: gael@gawel.org License: MIT license Description: ================================ Panoramisk. The Asterisk's druid ================================ .. image:: https://travis-ci.org/gawel/panoramisk.png?branch=master&style=flat-square :target: https://travis-ci.org/gawel/panoramisk .. image:: https://img.shields.io/coveralls/gawel/panoramisk/master.svg :target: https://coveralls.io/r/gawel/panoramisk?branch=master .. image:: https://img.shields.io/pypi/v/panoramisk.svg?style=flat-square :target: https://pypi.python.org/pypi/panoramisk .. image:: https://img.shields.io/pypi/dw/panoramisk.svg?style=flat-square :target: https://pypi.python.org/pypi/panoramisk .. image:: https://img.shields.io/github/issues/gawel/panoramisk.svg?style=flat-square :target: https://github.com/gawel/panoramisk/issues .. image:: https://img.shields.io/github/license/gawel/panoramisk.svg?style=flat-square :target: https://github.com/gawel/panoramisk/blob/master/LICENSE `Panoramisk` is a library based on python's `AsyncIO `_ to play with `Asterisk `_'s `manager `_. It uses the TCP manager server to listen to events and send actions. For basic usage, you have some examples in `examples/ `_ folder. You can find some help on IRC: irc://irc.freenode.net/panoramisk (`www `_) Source code is available at https://github.com/gawel/panoramisk/ Check the `full documentation `_ I've spent hours writing this software, with love. Please consider tiping if you like it: BTC: 1PruQAwByDndFZ7vTeJhyWefAghaZx9RZg ETH: 0xb6418036d8E06c60C4D91c17d72Df6e1e5b15CE6 LTC: LY6CdZcDbxnBX9GFBJ45TqVj8NykBBqsmT Keywords: asyncio,asterisk,voip Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Topic :: Communications :: Telephony Classifier: Topic :: Software Development :: Libraries :: Python Modules Provides-Extra: test panoramisk-1.4/panoramisk.egg-info/SOURCES.txt0000644000175000017500000000331614103000545021457 0ustar gawelgawel00000000000000.coveragerc CHANGES.rst CONTRIBUTING.rst LICENSE MANIFEST.in Pipfile Pipfile.lock README.rst bootstrap.py buildout.cfg setup.cfg setup.py tox.ini docs/Makefile docs/actions.rst docs/conf.py docs/conftest.py docs/fast_agi.rst docs/index.rst docs/manager.rst docs/message.rst docs/testing.rst examples/config.ini examples/event_listener.py examples/event_listener_modern.py examples/fast_agi_server.py examples/fast_agi_server_ivr.py examples/get_extension_status.py examples/originate.py examples/perpetual_ping.py examples/queue_status.py panoramisk/__init__.py panoramisk/actions.py panoramisk/ami_protocol.py panoramisk/call_manager.py panoramisk/command.py panoramisk/fast_agi.py panoramisk/manager.py panoramisk/message.py panoramisk/testing.py panoramisk/utils.py panoramisk.egg-info/PKG-INFO panoramisk.egg-info/SOURCES.txt panoramisk.egg-info/dependency_links.txt panoramisk.egg-info/entry_points.txt panoramisk.egg-info/not-zip-safe panoramisk.egg-info/requires.txt panoramisk.egg-info/top_level.txt tests/test_connection.py tests/test_fast_agi.py tests/test_manager.py tests/test_message.py tests/test_protocol.py tests/test_utils.py tests/fixtures/agent_loggued_in.yaml tests/fixtures/agent_not_in_pause.yaml tests/fixtures/asyncagi_channel_does_not_exist.yaml tests/fixtures/asyncagi_get_var.yaml tests/fixtures/command_core_show_version.yaml tests/fixtures/login_failed.yaml tests/fixtures/login_ok.yaml tests/fixtures/logoff.yaml tests/fixtures/originate_sync.yaml tests/fixtures/originate_with_events.yaml tests/fixtures/ping.yaml tests/fixtures/pjsip_show_endpoint.yaml tests/fixtures/queue_status.yaml tests/fixtures/rasterisk_command.yaml tests/fixtures/sip_notify.yaml tools/README.rst tools/netcat-middleman.sh tools/travispanoramisk-1.4/panoramisk.egg-info/dependency_links.txt0000644000175000017500000000000114103000545023636 0ustar gawelgawel00000000000000 panoramisk-1.4/panoramisk.egg-info/entry_points.txt0000644000175000017500000000010414103000545023061 0ustar gawelgawel00000000000000 [console_scripts] panoramisk = panoramisk.command:main panoramisk-1.4/panoramisk.egg-info/not-zip-safe0000644000175000017500000000000114103000545022016 0ustar gawelgawel00000000000000 panoramisk-1.4/panoramisk.egg-info/requires.txt0000644000175000017500000000006114103000545022165 0ustar gawelgawel00000000000000 [test] pytest pytest-asyncio coverage coveralls panoramisk-1.4/panoramisk.egg-info/top_level.txt0000644000175000017500000000001314103000545022314 0ustar gawelgawel00000000000000panoramisk panoramisk-1.4/setup.cfg0000644000175000017500000000031214103000545015547 0ustar gawelgawel00000000000000[tool:pytest] addopts = --doctest-modules --doctest-glob='*.rst' --ignore=setup.py --ignore=bootstrap.py --ignore=docs/conf.py --ignore=panoramisk/testing.py [egg_info] tag_build = tag_date = 0 panoramisk-1.4/setup.py0000755000175000017500000000303714103000544015451 0ustar gawelgawel00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys from setuptools import setup from setuptools import find_packages version = '1.4' install_requires = [] test_requires = [ 'pytest', 'pytest-asyncio<0.6.0' if sys.version_info < (3, 5) else 'pytest-asyncio', 'coverage', 'coveralls', ] def read(*rnames): return open(os.path.join(os.path.dirname(__file__), *rnames)).read() setup( name='panoramisk', version=version, description="asyncio based library to play with asterisk", long_description=read('README.rst'), classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Topic :: Communications :: Telephony', 'Topic :: Software Development :: Libraries :: Python Modules', ], keywords=['asyncio', 'asterisk', 'voip'], author='Gael Pasgrimaud', author_email='gael@gawel.org', url='https://github.com/gawel/panoramisk/', license='MIT license', packages=find_packages(exclude=['docs', 'tests']), include_package_data=True, zip_safe=False, install_requires=install_requires, tests_require=test_requires, extras_require={ 'test': test_requires, }, entry_points=''' [console_scripts] panoramisk = panoramisk.command:main ''' ) panoramisk-1.4/tests/0000755000175000017500000000000014103000545015074 5ustar gawelgawel00000000000000panoramisk-1.4/tests/fixtures/0000755000175000017500000000000014103000545016745 5ustar gawelgawel00000000000000panoramisk-1.4/tests/fixtures/agent_loggued_in.yaml0000644000175000017500000006631014103000544023130 0ustar gawelgawel00000000000000 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/22 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/22 Ping: Pong Timestamp: 1409169929.412068 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/23 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/23 Ping: Pong Timestamp: 1409169939.419909 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/24 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/24 Ping: Pong Timestamp: 1409169949.427993 Event: PeerStatus Privilege: system,all ChannelType: SIP Peer: SIP/hhhhh PeerStatus: Registered Address: 192.168.1.5:5060 Event: QueueMemberStatus Privilege: agent,all Queue: general_queue Location: Local/id-1@agentcallback MemberName: Agent/401 StateInterface: SIP/hhhhh Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-1 Event: PeerStatus Privilege: system,all ChannelType: SIP Peer: SIP/999999 PeerStatus: Registered Address: 192.168.1.5:5060 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/25 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/25 Ping: Pong Timestamp: 1409169959.432195 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/26 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/26 Ping: Pong Timestamp: 1409169969.445850 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/27 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/27 Ping: Pong Timestamp: 1409169979.455934 Event: Newchannel Privilege: call,all Channel: SIP/999999-00000002 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: 202 CallerIDName: user 202 AccountCode: Exten: *30402 Context: default Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: SIPURI Value: sip:999999@192.168.1.5:5060 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: SIPDOMAIN Value: 10.174.0.1 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: SIPCALLID Value: fa2d0521-75ad-43a9-8dd9-a99a0dae3d26 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_USERID Value: 2 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: PICKUPMARK Value: 202%default Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: TRANSFER_CONTEXT Value: default Uniqueid: 1409169987.2 Event: ChannelUpdate Privilege: system,all Channel: SIP/999999-00000002 Uniqueid: 1409169987.2 Channeltype: SIP SIPcallid: fa2d0521-75ad-43a9-8dd9-a99a0dae3d26 SIPfullcontact: sip:999999@192.168.1.5:5060 [218 bytes missing in capture file]Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: default Extension: *30402 Priority: 1 Application: Set AppData: XIVO_BASE_CONTEXT=default Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_BASE_CONTEXT Value: default Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: default Extension: *30402 Priority: 2 Application: Set AppData: XIVO_BASE_EXTEN=*30402 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_BASE_EXTEN Value: *30402 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: default Extension: *30402 Priority: 3 Application: Gosub AppData: agentstaticlogtoggle,s,1(402) Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: LOCAL(ARG1) Value: 402 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: LOCAL(ARGC) Value: 1 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogtoggle Extension: s Priority: 1 Application: NoOp AppData: Uniqueid: 1409169987.2 Event: CEL Privilege: call,all EventName: CHAN_START AccountCode: CallerIDnum: 202 CallerIDname: user 202 CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: *30402 Context: default Channel: SIP/999999-00000002 Application: AppData: EventTime: 2014-08-27 21:06:27 AMAFlags: DOCUMENTATION UniqueID: 1409169987.2 LinkedID: 1409169987.2 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 202 Context: default Hint: SIP/999999 Status: 1 Event: ExtensionStatus Privilege: call,all Exten: *6662 Context: default Hint: SIP/999999 Status: 1 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: xivo-pickup Extension: pickup Priority: 3 Application: Wait AppData: 1 Uniqueid: 1409169987.2 Event: CEL Privilege: call,all EventName: ANSWER AccountCode: CallerIDnum: 202 CallerIDname: user 202 CallerIDani: 202 CallerIDrdnis: CallerIDdnid: *30402 Exten: pickup Context: xivo-pickup Channel: SIP/999999-00000002 Application: Answer AppData: EventTime: 2014-08-27 21:06:27 AMAFlags: DOCUMENTATION UniqueID: 1409169987.2 LinkedID: 1409169987.2 Userfield: Peer: PeerAccount: Extra: Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: xivo-pickup Extension: pickup Priority: 4 Application: Set AppData: XIVO_PICKEDUP=1 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_PICKEDUP Value: 1 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: xivo-pickup Extension: pickup Priority: 5 Application: Return AppData: Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: GOSUB_RETVAL Value: Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogtoggle Extension: s Priority: 4 Application: AGI AppData: agi://127.0.0.1/agent_get_options,402 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1866797246 Command: SET VARIABLE "XIVO_AGENTEXISTS" "0" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTEXISTS Value: 0 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1866797246 Command: SET VARIABLE "XIVO_AGENTEXISTS" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 928872635 Command: SET VARIABLE "XIVO_AGENTEXISTS" "1" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTEXISTS Value: 1 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 928872635 Command: SET VARIABLE "XIVO_AGENTEXISTS" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 471755444 Command: SET VARIABLE "XIVO_AGENTPASSWD" "" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTPASSWD Value: Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 471755444 Command: SET VARIABLE "XIVO_AGENTPASSWD" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 943373659 Command: SET VARIABLE "XIVO_AGENTID" "3" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTID Value: 3 Uniqueid: 1409169987.2 [1613 bytes missing in capture file]Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1220663899 Command: SET VARIABLE "XIVO_AGENT_LOGIN_STATUS" "logged_out" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENT_LOGIN_STATUS Value: logged_out Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1220663899 Command: SET VARIABLE "XIVO_AGENT_LOGIN_STATUS" "logged_out" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1760817301 Command: VERBOSE "AGI handler 'agent_get_status' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1760817301 Command: VERBOSE "AGI handler 'agent_get_status' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogtoggle Extension: s Priority: 7 Application: Goto AppData: login_status_logged_out,1 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogtoggle Extension: login_status_logged_out Priority: 1 Application: NoOp AppData: Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogtoggle Extension: login_status_logged_out Priority: 2 Application: Gosub AppData: agentstaticlogin,s,1(402) Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: LOCAL(ARG1) Value: 402 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: LOCAL(ARGC) Value: 1 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1403387703 Command: SET VARIABLE "XIVO_AGENTEXISTS" "0" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTEXISTS Value: 0 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1403387703 Command: SET VARIABLE "XIVO_AGENTEXISTS" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1033098297 Command: SET VARIABLE "XIVO_AGENTEXISTS" "1" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTEXISTS Value: 1 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1033098297 Command: SET VARIABLE "XIVO_AGENTEXISTS" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1343196088 Command: SET VARIABLE "XIVO_AGENTPASSWD" "" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTPASSWD Value: Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1343196088 Command: SET VARIABLE "XIVO_AGENTPASSWD" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 897606607 Command: SET VARIABLE "XIVO_AGENTID" "3" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTID Value: 3 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 897606607 Command: SET VARIABLE "XIVO_AGENTID" "3" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 830831622 Command: SET VARIABLE "XIVO_AGENTNUM" "402" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTNUM Value: 402 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 830831622 Command: SET VARIABLE "XIVO_AGENTNUM" "402" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1329768506 Command: VERBOSE "AGI handler 'agent_get_options' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1329768506 Command: VERBOSE "AGI handler 'agent_get_options' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: s Priority: 7 Application: GotoIf AppData: 0?error_no_such_agent,1 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: s Priority: 8 Application: GosubIf AppData: 0?authenticate,1 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: s Priority: 9 Application: AGI AppData: agi://127.0.0.1/agent_login,3,202,default Uniqueid: 1409169987.2 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/28 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/28 Ping: Pong Timestamp: 1409169989.456835 Event: QueueMemberAdded Privilege: agent,all Queue: general_queue Location: Local/id-3@agentcallback MemberName: Agent/402 StateInterface: SIP/999999 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 2 Paused: 0 Event: UserEvent Privilege: user,all UserEvent: AgentLogin Action: UserEvent ActionID: 2 AgentID: 3 AgentNumber: 402 Extension: 202 Context: default Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1580723124 Command: SET VARIABLE "XIVO_AGENTSTATUS" "logged" Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: XIVO_AGENTSTATUS Value: logged Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1580723124 Command: SET VARIABLE "XIVO_AGENTSTATUS" "logged" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 574066156 Command: VERBOSE "AGI handler 'agent_login' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 574066156 Command: VERBOSE "AGI handler 'agent_login' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: s Priority: 10 Application: Goto AppData: status_logged,1 Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 1 Application: NoOp AppData: Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 2 Application: Playback AppData: agent-loginok Uniqueid: 1409169987.2 Event: RTCPReceived Privilege: reporting,all From: 192.168.1.5:60377 PT: 201(Receiver Report) ReceptionReports: 1 SenderSSRC: 2314535167 FractionLost: 255 PacketsLost: 62857 HighestSequence: 62911 SequenceNumberCycles: 0 IAJitter: 154953728 LastSR: 0.0000000000 DLSR: 0.0000(sec) Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: PLAYBACKSTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 3 Application: AGI AppData: agi://127.0.0.1/phone_progfunckey_devstate,agentstaticlogin,INUSE,*3 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 404007469 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 404007469 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 469538082 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***231***33)" "INUSE" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 469538082 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***231***33)" "INUSE" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1817837906 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1817837906 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 4 Application: AGI AppData: agi://127.0.0.1/phone_progfunckey_devstate,agentstaticlogin,INUSE,402 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1638740008 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1638740008 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 513441949 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***231*402)" "INUSE" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 513441949 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***231*402)" "INUSE" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1638230248 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1638230248 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 5 Application: AGI AppData: agi://127.0.0.1/phone_progfunckey_devstate,agentstaticlogoff,NOT_INUSE,*3 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 2095413575 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 2095413575 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 940331895 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***232***33)" "NOT_INUSE" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 940331895 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***232***33)" "NOT_INUSE" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1759701864 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1759701864 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 6 Application: AGI AppData: agi://127.0.0.1/phone_progfunckey_devstate,agentstaticlogoff,NOT_INUSE,402 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 268900170 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 268900170 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 364145573 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***232*402)" "NOT_INUSE" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 364145573 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***232*402)" "NOT_INUSE" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 449661018 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 449661018 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 7 Application: AGI AppData: agi://127.0.0.1/phone_progfunckey_devstate,agentstaticlogtoggle,INUSE,*3 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1650004488 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1650004488 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1560610405 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***230***33)" "INUSE" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1560610405 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***230***33)" "INUSE" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1767493288 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1767493288 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 8 Application: AGI AppData: agi://127.0.0.1/phone_progfunckey_devstate,agentstaticlogtoggle,INUSE,402 Uniqueid: 1409169987.2 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 850973468 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 850973468 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1978695696 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***230*402)" "INUSE" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1978695696 Command: SET VARIABLE "DEVICE_STATE(Custom:*7352***230*402)" "INUSE" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/999999-00000002 CommandId: 1831807943 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/999999-00000002 CommandId: 1831807943 Command: VERBOSE "AGI handler 'phone_progfunckey_devstate' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1409169987.2 Event: Newexten Privilege: dialplan,all Channel: SIP/999999-00000002 Context: agentstaticlogin Extension: status_logged Priority: 9 Application: Hangup AppData: Uniqueid: 1409169987.2 Event: SoftHangupRequest Privilege: call,all Channel: SIP/999999-00000002 Uniqueid: 1409169987.2 Cause: 16 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: RTPAUDIOQOS Value: ssrc=2057792214;themssrc=1743037615;lp=0;rxjitter=2364.000000;rxcount=229;txjitter=0.019554;txcount=68;rlp=62857;rtt=0.000000 Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: RTPAUDIOQOSJITTER Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: RTPAUDIOQOSLOSS Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: RTPAUDIOQOSRTT Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1409169987.2 Event: VarSet Privilege: dialplan,all Channel: SIP/999999-00000002 Variable: RTPAUDIOQOS Value: ssrc=2057792214;themssrc=1743037615;lp=0;rxjitter=2364.000000;rxcount=229;txjitter=0.019554;txcount=68;rlp=62857;rtt=0.000000 Uniqueid: 1409169987.2 Event: CEL Privilege: call,all EventName: HANGUP AccountCode: CallerIDnum: 202 CallerIDname: user 202 CallerIDani: 202 CallerIDrdnis: CallerIDdnid: *30402 Exten: status_logged Context: agentstaticlogin Channel: SIP/999999-00000002 Application: AppData: EventTime: 2014-08-27 21:06:32 AMAFlags: DOCUMENTATION UniqueID: 1409169987.2 LinkedID: 1409169987.2 Userfield: Peer: PeerAccount: Extra: 16,dialplan/builtin, Event: QueueMemberStatus Privilege: agent,all Queue: general_queue Location: Local/id-3@agentcallback MemberName: Agent/402 StateInterface: SIP/999999 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-3 Event: ExtensionStatus Privilege: call,all Exten: 202 Context: default Hint: SIP/999999 Status: 0 Event: ExtensionStatus Privilege: call,all Exten: *6662 Context: default Hint: SIP/999999 Status: 0 Event: CEL Privilege: call,all EventName: CHAN_END AccountCode: CallerIDnum: 202 CallerIDname: user 202 CallerIDani: 202 CallerIDrdnis: CallerIDdnid: *30402 Exten: status_logged Context: agentstaticlogin Channel: SIP/999999-00000002 Application: AppData: EventTime: 2014-08-27 21:06:32 AMAFlags: DOCUMENTATION UniqueID: 1409169987.2 LinkedID: 1409169987.2 Userfield: Peer: PeerAccount: Extra: Event: CEL Privilege: call,all EventName: LINKEDID_END AccountCode: CallerIDnum: 202 CallerIDname: user 202 CallerIDani: 202 CallerIDrdnis: CallerIDdnid: *30402 Exten: status_logged Context: agentstaticlogin Channel: SIP/999999-00000002 Application: AppData: EventTime: 2014-08-27 21:06:32 AMAFlags: DOCUMENTATION UniqueID: 1409169987.2 LinkedID: 1409169987.2 Userfield: Peer: PeerAccount: Extra: Event: QueueMemberStatus Privilege: agent,all Queue: general_queue Location: Local/id-3@agentcallback MemberName: Agent/402 StateInterface: SIP/999999 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-3 Action: Ping ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/29 Response: Success ActionID: b4856f7a-e61e-483b-84e6-12e7d26ea73d/1/29 Ping: Pong Timestamp: 1409169999.470280 panoramisk-1.4/tests/fixtures/agent_not_in_pause.yaml0000644000175000017500000002764414103000544023506 0ustar gawelgawel00000000000000Event: Newchannel Privilege: call,all Channel: SIP/00000-0000095f ChannelState: 0 ChannelStateDesc: Down CallerIDNum: 2001 CallerIDName: Ludovic Gasc AccountCode: Exten: *12 Context: default Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: SIPURI Value: sip:00000@192.168.2.27:5060 Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: SIPDOMAIN Value: yyyyyyyyyy.xxx Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: SIPCALLID Value: baecd088-e735-4b1e-8b13-fbc88b3d90ef Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: XIVO_USERID Value: 2 Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: PICKUPMARK Value: 2001%default Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: TRANSFER_CONTEXT Value: default Uniqueid: 1413823936.3729 Event: ChannelUpdate Privilege: system,all Channel: SIP/00000-0000095f Uniqueid: 1413823936.3729 Channeltype: SIP SIPcallid: baecd088-e735-4b1e-8b13-fbc88b3d90ef SIPfullcontact: sip:00000@83.101.5.124:5060 Event: Newstate Privilege: call,all Channel: SIP/00000-0000095f ChannelState: 4 ChannelStateDesc: Ring CallerIDNum: 2001 CallerIDName: Ludovic Gasc ConnectedLineNum: ConnectedLineName: Uniqueid: 1413823936.3729 Event: CEL Privilege: call,all EventName: CHAN_START AccountCode: CallerIDnum: 2001 CallerIDname: Ludovic Gasc CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: *12 Context: default Channel: SIP/00000-0000095f Application: AppData: EventTime: 2014-10-20 18:52:16 AMAFlags: DOCUMENTATION UniqueID: 1413823936.3729 LinkedID: 1413823936.3729 Userfield: Peer: PeerAccount: Extra: Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 1 Application: Answer AppData: Uniqueid: 1413823936.3729 Event: Newstate Privilege: call,all Channel: SIP/00000-0000095f ChannelState: 6 ChannelStateDesc: Up CallerIDNum: 2001 CallerIDName: Ludovic Gasc ConnectedLineNum: ConnectedLineName: Uniqueid: 1413823936.3729 Event: CEL Privilege: call,all EventName: ANSWER AccountCode: CallerIDnum: 2001 CallerIDname: Ludovic Gasc CallerIDani: 2001 CallerIDrdnis: CallerIDdnid: *12 Exten: *12 Context: default Channel: SIP/00000-0000095f Application: Answer AppData: EventTime: 2014-10-20 18:52:16 AMAFlags: DOCUMENTATION UniqueID: 1413823936.3729 LinkedID: 1413823936.3729 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 2001 Context: default Hint: SIP/00000 Status: 1 Event: ExtensionStatus Privilege: call,all Exten: *6662 Context: default Hint: SIP/00000 Status: 1 Event: QueueMemberStatus Privilege: agent,all Queue: maisonvoyance-tous Location: Local/id-12@agentcallback MemberName: Agent/999 StateInterface: SIP/00000 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 2 Paused: 1 Skills: agent-12 Event: QueueMemberStatus Privilege: agent,all Queue: maisonvoyance-tous Location: Local/id-12@agentcallback MemberName: Agent/999 StateInterface: SIP/00000 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 2 Paused: 1 Skills: agent-12 Event: QueueMemberStatus Privilege: agent,all Queue: maisonvoyance-tous Location: Local/id-12@agentcallback MemberName: Agent/999 StateInterface: SIP/00000 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 2 Paused: 1 Skills: agent-12 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 2 Application: DumpChan AppData: 7 Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 3 Application: Verbose AppData: 3, "-= Pause/Unpause agent =-" Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 4 Application: Verbose AppData: 3, "-= Peer name : 00000 =-" Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 5 Application: Set AppData: EYEPEA_PEERNAME=SIP/00000 Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: EYEPEA_PEERNAME Value: SIP/00000 Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 6 Application: AGI AppData: agi://127.0.0.1/get_agent_from_peer Uniqueid: 1413823936.3729 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/00000-0000095f CommandId: 849605471 Command: GET VARIABLE "EYEPEA_PEERNAME" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/00000-0000095f CommandId: 849605471 Command: GET VARIABLE "EYEPEA_PEERNAME" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/00000-0000095f CommandId: 435836313 Command: SET VARIABLE "DEBUG EYEPEA_AGENT" "[u'Local/id-12@agentcallback']" Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: DEBUG EYEPEA_AGENT Value: [u'Local/id-12@agentcallback'] Uniqueid: 1413823936.3729 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/00000-0000095f CommandId: 435836313 Command: SET VARIABLE "DEBUG EYEPEA_AGENT" "[u'Local/id-12@agentcallback']" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/00000-0000095f CommandId: 750822880 Command: SET VARIABLE "EYEPEA_AGENT_INTERFACE" "Local/id-12@agentcallback" Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: EYEPEA_AGENT_INTERFACE Value: Local/id-12@agentcallback Uniqueid: 1413823936.3729 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/00000-0000095f CommandId: 750822880 Command: SET VARIABLE "EYEPEA_AGENT_INTERFACE" "Local/id-12@agentcallback" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/00000-0000095f CommandId: 364341601 Command: VERBOSE "AGI handler 'get_agent_from_peer' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/00000-0000095f CommandId: 364341601 Command: VERBOSE "AGI handler 'get_agent_from_peer' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: AGISTATUS Value: SUCCESS Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 7 Application: GotoIf AppData: 0?error Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 8 Application: Verbose AppData: 3, "-= Peer name 00000 uses interface Local/id-12@agentcallback Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: DB_RESULT Value: true Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 9 Application: GotoIf AppData: 1?unpause:pause Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 14 Application: Verbose AppData: 3, "-= Unpausing agent Local/id-12@agentcallback =-" Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 15 Application: UnpauseQueueMember AppData: ,Local/id-12@agentcallback Uniqueid: 1413823936.3729 Event: QueueMemberPaused Privilege: agent,all Queue: maisonvoyance-tous Location: Local/id-12@agentcallback MemberName: Agent/999 Paused: 0 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: UPQMSTATUS Value: UNPAUSED Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 16 Application: Set AppData: DB(pause_active/00000)=false Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 17 Application: Goto AppData: hangup Uniqueid: 1413823936.3729 Event: Newexten Privilege: dialplan,all Channel: SIP/00000-0000095f Context: default Extension: *12 Priority: 19 Application: Hangup AppData: 16 Uniqueid: 1413823936.3729 Event: SoftHangupRequest Privilege: call,all Channel: SIP/00000-0000095f Uniqueid: 1413823936.3729 Cause: 16 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: RTPAUDIOQOS Value: ssrc=143534956;themssrc=0;lp=0;rxjitter=0.000000;rxcount=0;txjitter=0.000000;txcount=0;rlp=0;rtt=0.000000 Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: RTPAUDIOQOSJITTER Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: RTPAUDIOQOSLOSS Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: RTPAUDIOQOSRTT Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1413823936.3729 Event: VarSet Privilege: dialplan,all Channel: SIP/00000-0000095f Variable: RTPAUDIOQOS Value: ssrc=143534956;themssrc=0;lp=0;rxjitter=0.000000;rxcount=0;txjitter=0.000000;txcount=0;rlp=0;rtt=0.000000 Uniqueid: 1413823936.3729 Event: Hangup Privilege: call,all Channel: SIP/00000-0000095f Uniqueid: 1413823936.3729 CallerIDNum: 2001 CallerIDName: Ludovic Gasc ConnectedLineNum: ConnectedLineName: AccountCode: Cause: 16 Cause-txt: Normal Clearing Event: CEL Privilege: call,all EventName: HANGUP AccountCode: CallerIDnum: 2001 CallerIDname: Ludovic Gasc CallerIDani: 2001 CallerIDrdnis: CallerIDdnid: *12 Exten: *12 Context: default Channel: SIP/00000-0000095f Application: AppData: EventTime: 2014-10-20 18:52:16 AMAFlags: DOCUMENTATION UniqueID: 1413823936.3729 LinkedID: 1413823936.3729 Userfield: Peer: PeerAccount: Extra: 16,dialplan/builtin, Event: CEL Privilege: call,all EventName: CHAN_END AccountCode: CallerIDnum: 2001 CallerIDname: Ludovic Gasc CallerIDani: 2001 CallerIDrdnis: CallerIDdnid: *12 Exten: *12 Context: default Channel: SIP/00000-0000095f Application: AppData: EventTime: 2014-10-20 18:52:16 AMAFlags: DOCUMENTATION UniqueID: 1413823936.3729 LinkedID: 1413823936.3729 Userfield: Peer: PeerAccount: Extra: Event: CEL Privilege: call,all EventName: LINKEDID_END AccountCode: CallerIDnum: 2001 CallerIDname: Ludovic Gasc CallerIDani: 2001 CallerIDrdnis: CallerIDdnid: *12 Exten: *12 Context: default Channel: SIP/00000-0000095f Application: AppData: EventTime: 2014-10-20 18:52:16 AMAFlags: DOCUMENTATION UniqueID: 1413823936.3729 LinkedID: 1413823936.3729 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 2001 Context: default Hint: SIP/00000 Status: 0 Event: ExtensionStatus Privilege: call,all Exten: *6662 Context: default Hint: SIP/00000 Status: 0 Event: QueueMemberStatus Privilege: agent,all Queue: maisonvoyance-tous Location: Local/id-12@agentcallback MemberName: Agent/999 StateInterface: SIP/00000 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-12 Event: QueueMemberStatus Privilege: agent,all Queue: xxxxxxxxxxxx-tous Location: Local/id-12@agentcallback MemberName: Agent/999 StateInterface: SIP/00000 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-12 Event: Registry Privilege: system,all ChannelType: SIP Username: 92717277 Domain: xxxxxxxxx.xxx Status: Registered panoramisk-1.4/tests/fixtures/asyncagi_channel_does_not_exist.yaml0000644000175000017500000000040314103000544026221 0ustar gawelgawel00000000000000Action: AGI ActionID: action/transaction_uid/1/1 Channel: SIP/eeeeee-00000014 Command: GET VARIABLE DIALSTATUS CommandID: command/transaction_uid/1/1 Response: Error ActionID: action/transaction_uid/1/1 Message: Channel SIP/eeeeee-00000014 does not exist. panoramisk-1.4/tests/fixtures/asyncagi_get_var.yaml0000644000175000017500000000127514103000544023142 0ustar gawelgawel00000000000000Action: AGI ActionID: action/transaction_uid/1/1 Channel: SIP/000000-00000a53 Command: GET VARIABLE endpoint CommandID: command/transaction_uid/1/1 Response: Success ActionID: action/transaction_uid/1/1 Message: Added AGI command to queue Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/000000-00000a53 CommandId: 2095882815 Command: GET VARIABLE endpoint Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/000000-00000a53 CommandId: 2095882815 Command: GET VARIABLE endpoint ResultCode: 200 Result: Success Event: AsyncAGI Privilege: agi,all SubEvent: Exec Channel: SIP/000000-00000a53 CommandID: command/transaction_uid/1/1 Result: 200%20result%3D1%20(SIP%2F000000)%0A panoramisk-1.4/tests/fixtures/command_core_show_version.yaml0000644000175000017500000000047114103000544025065 0ustar gawelgawel00000000000000action: command command: core show version actionid: action/transaction_uid/1/1 Response: Follows Privilege: Command ActionID: action/transaction_uid/1/1 Asterisk 11.11.0+xivo.14.15~20140724.155259.ed5592b-wheezy built by root @ wheezy-farm on a x86_64 running Linux on 2014-08-06 19:30:37 UTC --END COMMAND-- panoramisk-1.4/tests/fixtures/login_failed.yaml0000644000175000017500000000032514103000544022244 0ustar gawelgawel00000000000000Asterisk Call Manager/1.3 Action: login ActionID: action/transaction_uid/1/1 Username: nnnnnnnnn Secret: nnnnnnnnnn Events: on Response: Error Message: Authentication failed ActionID: action/transaction_uid/1/1 panoramisk-1.4/tests/fixtures/login_ok.yaml0000644000175000017500000000043214103000544021430 0ustar gawelgawel00000000000000Asterisk Call Manager/1.3 Action: login ActionID: action/transaction_uid/1/1 username: nnnnnnnnn secret: yyyyyyyyyyyy events: on Response: Success ActionID: action/transaction_uid/1/1 Message: Authentication accepted Event: FullyBooted Privilege: system,all Status: Fully Booted panoramisk-1.4/tests/fixtures/logoff.yaml0000644000175000017500000000022014103000544021076 0ustar gawelgawel00000000000000 Action: logoff ActionID: action/transaction_uid/1/1 Response: Goodbye ActionID: action/transaction_uid/1/1 Message: Thanks for all the fish. panoramisk-1.4/tests/fixtures/originate_sync.yaml0000644000175000017500000000041314103000544022643 0ustar gawelgawel00000000000000Action: Originate ActionID: action/transaction_uid/1/1 Channel: Local/2540 Exten: 2580 Context: default Priority: 1 Timeout: 30000 CallerID: Panoramisk tests Async: false Response: Success ActionID: action/transaction_uid/1/1 Message: Originate successfully queued panoramisk-1.4/tests/fixtures/originate_with_events.yaml0000644000175000017500000037356214103000544024250 0ustar gawelgawel00000000000000Action: Originate ActionID: generated_action_id Channel: Local/259 Exten: 254 Context: default Priority: 1 Timeout: 30000 CallerID: Panoramisk tests Async: false Response: Success ActionID: generated_action_id Message: Originate successfully queued Event: Newchannel Privilege: call,all Channel: Local/259@default-00000000;1 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: CallerIDName: AccountCode: Exten: 259 Context: default Uniqueid: 1414510600.0 Event: Newchannel Privilege: call,all Channel: Local/259@default-00000000;2 ChannelState: 4 ChannelStateDesc: Ring CallerIDNum: CallerIDName: AccountCode: Exten: 259 Context: default Uniqueid: 1414510600.1 Event: NewAccountCode Privilege: call,all Channel: Local/259@default-00000000;1 Uniqueid: 1414510600.0 AccountCode: OldAccountCode: Event: NewCallerid Privilege: call,all Channel: Local/259@default-00000000;1 CallerIDNum: CallerIDName: Panoramisk tests Uniqueid: 1414510600.0 CID-CallingPres: 0 (Presentation Allowed, Not Screened) Event: LocalBridge Privilege: call,all Channel1: Local/259@default-00000000;1 Channel2: Local/259@default-00000000;2 Uniqueid1: 1414510600.0 Uniqueid2: 1414510600.1 Context: default Exten: 259 LocalOptimization: Yes Event: CEL Privilege: call,all EventName: CHAN_START AccountCode: CallerIDnum: CallerIDname: CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: 259 Context: default Channel: Local/259@default-00000000;1 Application: AppData: EventTime: 2014-10-28 16:36:40 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: default Extension: 259 Priority: 1 Application: Set AppData: XIVO_BASE_CONTEXT=default Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_BASE_CONTEXT Value: default Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: default Extension: 259 Priority: 2 Application: Set AppData: XIVO_BASE_EXTEN=259 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_BASE_EXTEN Value: 259 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: default Extension: 259 Priority: 3 Application: Gosub AppData: user,s,1(148,) Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: 148 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 2 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 1 Application: Set AppData: XIVO_DSTID=148 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DSTID Value: 148 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 2 Application: Set AppData: XIVO_PRESUBR_GLOBAL_NAME=USER Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_PRESUBR_GLOBAL_NAME Value: USER Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 3 Application: Set AppData: CC_EXTEN=259 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: CC_EXTEN Value: 259 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 4 Application: Set AppData: CC_CONTEXT=default Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: CC_CONTEXT Value: default Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 5 Application: Set AppData: XIVO_SRCNUM= Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_SRCNUM Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 6 Application: Set AppData: XIVO_DSTNUM=259 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DSTNUM Value: 259 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 7 Application: Set AppData: XIVO_CONTEXT=default Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_CONTEXT Value: default Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 8 Application: Set AppData: __XIVO_CALLORIGIN=intern Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: __XIVO_CALLORIGIN Value: intern Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 9 Application: Set AppData: __XIVO_FWD_REFERER=user:148 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: __XIVO_FWD_REFERER Value: user:148 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 10 Application: UserEvent AppData: User,CHANNEL: Local/259@default-00000000;2,XIVO_USERID: ,XIVO_SRCNUM: ,XIVO_CALLORIGIN: intern,XIVO_DSTID: 148 Uniqueid: 1414510600.1 Event: UserEvent Privilege: user,all UserEvent: User Uniqueid: 1414510600.1 CHANNEL: Local/259@default-00000000;2 XIVO_USERID: XIVO_SRCNUM: XIVO_CALLORIGIN: intern XIVO_DSTID: 148 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 11 Application: GotoIf AppData: ?:noblindxfer Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 13 Application: Set AppData: XIVO_FWD_REFERER_TYPE=user Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_REFERER_TYPE Value: user Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 14 Application: Set AppData: XIVO_REAL_FROMGROUP=0 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_REAL_FROMGROUP Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 15 Application: Set AppData: XIVO_REAL_FROMQUEUE=0 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_REAL_FROMQUEUE Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 16 Application: AGI AppData: agi://127.0.0.1/incoming_user_set_features Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1294682027 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1294682027 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1770412716 Command: GET VARIABLE "XIVO_DSTID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1770412716 Command: GET VARIABLE "XIVO_DSTID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1141222454 Command: GET VARIABLE "XIVO_CALLORIGIN" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1141222454 Command: GET VARIABLE "XIVO_CALLORIGIN" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1039650251 Command: GET VARIABLE "XIVO_SRCNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1039650251 Command: GET VARIABLE "XIVO_SRCNUM" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1141089268 Command: GET VARIABLE "XIVO_DSTNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1141089268 Command: GET VARIABLE "XIVO_DSTNUM" ResultCode: 200 Result: Success Event: CEL Privilege: call,all EventName: CHAN_START AccountCode: CallerIDnum: CallerIDname: CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: 259 Context: default Channel: Local/259@default-00000000;2 Application: AppData: EventTime: 2014-10-28 16:36:40 AMAFlags: DOCUMENTATION UniqueID: 1414510600.1 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 209411487 Command: SET VARIABLE "XIVO_DST_USERNUM" "259" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DST_USERNUM Value: 259 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 209411487 Command: SET VARIABLE "XIVO_DST_USERNUM" "259" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1957362105 Command: SET VARIABLE "XIVO_DST_FIRSTNAME" "S" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DST_FIRSTNAME Value: S Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1957362105 Command: SET VARIABLE "XIVO_DST_FIRSTNAME" "S" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1553996913 Command: SET VARIABLE "XIVO_DST_LASTNAME" "F" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DST_LASTNAME Value: F Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1553996913 Command: SET VARIABLE "XIVO_DST_LASTNAME" "F" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 2009178668 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NAME" "S F" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DST_REDIRECTING_NAME Value: S F Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 2009178668 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NAME" "S F" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 2123325799 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NUM" "259" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_DST_REDIRECTING_NUM Value: 259 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 2123325799 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NUM" "259" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 488565503 Command: SET VARIABLE "XIVO_INTERFACE" "SIP/ddddd" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_INTERFACE Value: SIP/ddddd Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 488565503 Command: SET VARIABLE "XIVO_INTERFACE" "SIP/ddddd" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 708553069 Command: SET VARIABLE "XIVO_CALLOPTIONS" "hHt" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_CALLOPTIONS Value: hHt Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 708553069 Command: SET VARIABLE "XIVO_CALLOPTIONS" "hHt" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 605519885 Command: SET VARIABLE "XIVO_SIMULTCALLS" "5" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_SIMULTCALLS Value: 5 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 605519885 Command: SET VARIABLE "XIVO_SIMULTCALLS" "5" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 347280486 Command: SET VARIABLE "XIVO_RINGSECONDS" "30" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_RINGSECONDS Value: 30 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 347280486 Command: SET VARIABLE "XIVO_RINGSECONDS" "30" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 290639273 Command: SET VARIABLE "XIVO_ENABLEDND" "0" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_ENABLEDND Value: 0 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 290639273 Command: SET VARIABLE "XIVO_ENABLEDND" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 2047330487 Command: SET VARIABLE "XIVO_ENABLEVOICEMAIL" "0" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_ENABLEVOICEMAIL Value: 0 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 2047330487 Command: SET VARIABLE "XIVO_ENABLEVOICEMAIL" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 569396204 Command: SET VARIABLE "XIVO_MAILBOX" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_MAILBOX Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 569396204 Command: SET VARIABLE "XIVO_MAILBOX" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1662112503 Command: SET VARIABLE "XIVO_MAILBOX_CONTEXT" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_MAILBOX_CONTEXT Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1662112503 Command: SET VARIABLE "XIVO_MAILBOX_CONTEXT" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 498094479 Command: SET VARIABLE "XIVO_USEREMAIL" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_USEREMAIL Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 498094479 Command: SET VARIABLE "XIVO_USEREMAIL" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 2085353353 Command: SET VARIABLE "XIVO_ENABLEUNC" "0" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_ENABLEUNC Value: 0 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 2085353353 Command: SET VARIABLE "XIVO_ENABLEUNC" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 969443263 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_UNC_ACTION Value: none Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 969443263 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 714502157 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_UNC_ACTIONARG1 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 714502157 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 328446718 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_UNC_ACTIONARG2 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 328446718 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 408178965 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_BUSY_ACTION Value: none Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 408178965 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 813286668 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_BUSY_ISDA Value: 1 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 813286668 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 219622065 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_BUSY_ACTIONARG1 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 219622065 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 59543310 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_BUSY_ACTIONARG2 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 59543310 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1649213707 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_NOANSWER_ACTION Value: none Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1649213707 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 314809633 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_NOANSWER_ISDA Value: 1 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 314809633 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 2010988581 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_NOANSWER_ACTIONARG1 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 2010988581 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1782431266 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_NOANSWER_ACTIONARG2 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1782431266 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1918196672 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CONGESTION_ACTION Value: none Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1918196672 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 974641822 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CONGESTION_ISDA Value: 1 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 974641822 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 454756922 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CONGESTION_ACTIONARG1 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 454756922 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1910964650 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CONGESTION_ACTIONARG2 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1910964650 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1342829434 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CHANUNAVAIL_ACTION Value: none Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1342829434 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1835637638 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CHANUNAVAIL_ISDA Value: 1 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1835637638 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 455217448 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG1 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 455217448 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1181126589 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG2 Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1181126589 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1452730118 Command: SET VARIABLE "CHANNEL(musicclass)" "default" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1452730118 Command: SET VARIABLE "CHANNEL(musicclass)" "default" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 590815113 Command: SET VARIABLE "XIVO_CALLRECORDFILE" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_CALLRECORDFILE Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 590815113 Command: SET VARIABLE "XIVO_CALLRECORDFILE" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 873484241 Command: SET VARIABLE "XIVO_USERPREPROCESS_SUBROUTINE" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_USERPREPROCESS_SUBROUTINE Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 873484241 Command: SET VARIABLE "XIVO_USERPREPROCESS_SUBROUTINE" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1039737321 Command: SET VARIABLE "XIVO_MOBILEPHONENUMBER" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_MOBILEPHONENUMBER Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1039737321 Command: SET VARIABLE "XIVO_MOBILEPHONENUMBER" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1648843108 Command: GET VARIABLE "XIVO_PATH" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1648843108 Command: GET VARIABLE "XIVO_PATH" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1456131114 Command: SET VARIABLE "XIVO_PATH" "user" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_PATH Value: user Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1456131114 Command: SET VARIABLE "XIVO_PATH" "user" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1674315446 Command: SET VARIABLE "XIVO_PATH_ID" "148" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_PATH_ID Value: 148 Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1674315446 Command: SET VARIABLE "XIVO_PATH_ID" "148" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1962439731 Command: VERBOSE "AGI handler 'incoming_user_set_features' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1962439731 Command: VERBOSE "AGI handler 'incoming_user_set_features' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 17 Application: NoOp AppData: filename call recording: none Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 18 Application: AGI AppData: agi://127.0.0.1/check_schedule Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1611665049 Command: GET VARIABLE "XIVO_PATH" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1611665049 Command: GET VARIABLE "XIVO_PATH" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1933457243 Command: GET VARIABLE "XIVO_PATH_ID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1933457243 Command: GET VARIABLE "XIVO_PATH_ID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 243126246 Command: SET VARIABLE "XIVO_SCHEDULE_STATUS" "opened" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_SCHEDULE_STATUS Value: opened Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 243126246 Command: SET VARIABLE "XIVO_SCHEDULE_STATUS" "opened" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 679953752 Command: SET VARIABLE "XIVO_PATH" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_PATH Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 679953752 Command: SET VARIABLE "XIVO_PATH" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 213595631 Command: VERBOSE "AGI handler 'check_schedule' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 213595631 Command: VERBOSE "AGI handler 'check_schedule' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 19 Application: GotoIf AppData: 0?CLOSED,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 20 Application: Gosub AppData: xivo-ring_type_set,s,1 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-ring_type_set Extension: s Priority: 1 Application: SIPRemoveHeader AppData: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-ring_type_set Extension: s Priority: 2 Application: AGI AppData: agi://127.0.0.1/getring Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 2079266821 Command: GET VARIABLE "XIVO_DSTNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 2079266821 Command: GET VARIABLE "XIVO_DSTNUM" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1701189425 Command: GET VARIABLE "XIVO_CONTEXT" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1701189425 Command: GET VARIABLE "XIVO_CONTEXT" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1038234813 Command: GET VARIABLE "XIVO_CALLORIGIN" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1038234813 Command: GET VARIABLE "XIVO_CALLORIGIN" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 406408326 Command: GET VARIABLE "XIVO_FWD_REFERER" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 406408326 Command: GET VARIABLE "XIVO_FWD_REFERER" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 721632134 Command: GET VARIABLE "XIVO_CALLFORWARDED" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 721632134 Command: GET VARIABLE "XIVO_CALLFORWARDED" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 450975286 Command: SET VARIABLE "XIVO_RINGTYPE" "" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_RINGTYPE Value: Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 450975286 Command: SET VARIABLE "XIVO_RINGTYPE" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1117157776 Command: VERBOSE "Using the native phone ring tone" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1117157776 Command: VERBOSE "Using the native phone ring tone" 1 ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 44311958 Command: VERBOSE "AGI handler 'getring' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 44311958 Command: VERBOSE "AGI handler 'getring' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-ring_type_set Extension: s Priority: 3 Application: GotoIf AppData: ?:exit Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-ring_type_set Extension: s Priority: 8 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 21 Application: Gosub AppData: xivo-subroutine,s,1() Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subroutine Extension: s Priority: 1 Application: GotoIf AppData: ?:nosubroutine Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subroutine Extension: s Priority: 4 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 22 Application: Set AppData: XIVO_RINGSECONDS=30 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_RINGSECONDS Value: 30 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 23 Application: Gosub AppData: xivo-user_rights_check,s,1 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-user_rights_check Extension: s Priority: 1 Application: AGI AppData: agi://127.0.0.1/user_set_call_rights Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 735878980 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 735878980 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 1584201653 Command: GET VARIABLE "XIVO_DSTNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 1584201653 Command: GET VARIABLE "XIVO_DSTNUM" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 195122677 Command: GET VARIABLE "XIVO_OUTCALLID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 195122677 Command: GET VARIABLE "XIVO_OUTCALLID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 253109698 Command: SET VARIABLE "XIVO_AUTHORIZATION" "ALLOW" Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: XIVO_AUTHORIZATION Value: ALLOW Uniqueid: 1414510600.1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 253109698 Command: SET VARIABLE "XIVO_AUTHORIZATION" "ALLOW" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: Local/259@default-00000000;2 CommandId: 275288411 Command: VERBOSE "AGI handler 'user_set_call_rights' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: Local/259@default-00000000;2 CommandId: 275288411 Command: VERBOSE "AGI handler 'user_set_call_rights' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-user_rights_check Extension: s Priority: 2 Application: GotoIf AppData: ALLOW?:error,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-user_rights_check Extension: s Priority: 3 Application: GotoIf AppData: 1?allow,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-user_rights_check Extension: allow Priority: 1 Application: NoOp AppData: User allowed to make call Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-user_rights_check Extension: allow Priority: 2 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 24 Application: GotoIf AppData: 0?dial_from_queue,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 25 Application: GotoIf AppData: 0?xivo-user_callfilter,s,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 26 Application: GotoIf AppData: ?:28 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 28 Application: GotoIf AppData: 0?DND,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 29 Application: DumpChan AppData: 7 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 30 Application: NoOp AppData: XIVO_ENABLEUNC: 0 XIVO_SRCNUM: XIVO_FWD_USER_UNC_ACTIONARG: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 31 Application: GotoIf AppData: 0?UNC,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 32 Application: GotoIf AppData: 0?dial_from_group,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 33 Application: GotoIf AppData: 0?BUSY,1 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 34 Application: Set AppData: OUTBOUND_GROUP_ONCE=148@XIVO_USER Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: OUTBOUND_GROUP_ONCE Value: 148@XIVO_USER Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 35 Application: Gosub AppData: xivo-connectedline,s,1(259,S F) Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: 259 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: S F Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 2 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-connectedline Extension: s Priority: 1 Application: NoOp AppData: Generic subroutine for connectedline Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-connectedline Extension: s Priority: 2 Application: Set AppData: CONNECTEDLINE(all,i)=S F <259> Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-connectedline Extension: s Priority: 3 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 36 Application: Gosub AppData: xivo-global-subroutine,s,1 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-global-subroutine Extension: s Priority: 1 Application: GotoIf AppData: 1?:return Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-global-subroutine Extension: s Priority: 2 Application: GotoIf AppData: USER?:return Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-global-subroutine Extension: s Priority: 3 Application: GotoIf AppData: xivo-subrgbl-user?:return Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-global-subroutine Extension: s Priority: 4 Application: GotoIf AppData: 1?:return Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-global-subroutine Extension: s Priority: 5 Application: Gosub AppData: xivo-subrgbl-user,s,1 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subrgbl-user Extension: s Priority: 1 Application: Verbose AppData: 3, "-= ALLOcloud preprocess subroutine groups =-" Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subrgbl-user Extension: s Priority: 2 Application: Verbose AppData: 3, "-= Test if the user is busy =-" Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subrgbl-user Extension: s Priority: 3 Application: Set AppData: COUNT_BUSY=NOT_INUSE Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: COUNT_BUSY Value: NOT_INUSE Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subrgbl-user Extension: s Priority: 4 Application: GotoIf AppData: 1?return Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subrgbl-user Extension: s Priority: 9 Application: Verbose AppData: 3, "-= Returning to the original call-flow =-" Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-subrgbl-user Extension: s Priority: 10 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: xivo-global-subroutine Extension: s Priority: 6 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 37 Application: Gosub AppData: originate-caller-id,s,1 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: originate-caller-id Extension: s Priority: 1 Application: GotoIf AppData: 0?:name Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: originate-caller-id Extension: s Priority: 3 Application: GotoIf AppData: 0?:end Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: originate-caller-id Extension: s Priority: 5 Application: Return AppData: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.1 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;2 Context: user Extension: s Priority: 38 Application: Dial AppData: SIP/ddddd,30,hHt Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALSTATUS Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALEDPEERNUMBER Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALEDPEERNAME Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: ANSWEREDTIME Value: Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALEDTIME Value: Uniqueid: 1414510600.1 Event: Newchannel Privilege: call,all Channel: SIP/ddddd-00000000 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: 259 CallerIDName: S F AccountCode: Exten: Context: default Uniqueid: 1414510601.2 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: SIPCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510601.2 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_USERID Value: 148 Uniqueid: 1414510601.2 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: PICKUPMARK Value: 259%default Uniqueid: 1414510601.2 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: TRANSFER_CONTEXT Value: default Uniqueid: 1414510601.2 Event: ChannelUpdate Privilege: system,all Channel: SIP/ddddd-00000000 Uniqueid: 1414510601.2 Channeltype: SIP SIPcallid: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 SIPfullcontact: sip:ddddd@192.168.0.2:42526;rinstance=9ec5b250d716f66e;transport=UDP Event: ChannelUpdate Privilege: system,all Channel: SIP/ddddd-00000000 Channeltype: SIP SIPcallid: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 SIPfullcontact: sip:ddddd@192.168.0.2:42526;rinstance=9ec5b250d716f66e;transport=UDP Peername: ddddd Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDPEERNUMBER Value: ddddd Uniqueid: 1414510601.2 Event: Dial Privilege: call,all SubEvent: Begin Channel: Local/259@default-00000000;2 Destination: SIP/ddddd-00000000 CallerIDNum: CallerIDName: Panoramisk tests ConnectedLineNum: 259 ConnectedLineName: S F UniqueID: 1414510600.1 DestUniqueID: 1414510601.2 Dialstring: ddddd Event: CEL Privilege: call,all EventName: CHAN_START AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: default Channel: SIP/ddddd-00000000 Application: AppData: EventTime: 2014-10-28 16:36:41 AMAFlags: DOCUMENTATION UniqueID: 1414510601.2 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 259 Context: default Hint: SIP/ddddd Status: 8 Event: ExtensionStatus Privilege: call,all Exten: *666148 Context: default Hint: SIP/ddddd Status: 8 Event: SIPRinging Privilege: system,all Peer: SIP/ddddd Event: Newstate Privilege: call,all Channel: SIP/ddddd-00000000 ChannelState: 5 ChannelStateDesc: Ringing CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: ConnectedLineName: Panoramisk tests Uniqueid: 1414510601.2 Event: Newstate Privilege: call,all Channel: Local/259@default-00000000;1 ChannelState: 5 ChannelStateDesc: Ringing CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: ConnectedLineName: Panoramisk tests Uniqueid: 1414510600.0 Event: ChannelUpdate Privilege: system,all Channel: SIP/ddddd-00000000 Channeltype: SIP Uniqueid: 1414510601.2 SIPcallid: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 SIPfullcontact: sip:ddddd@192.168.0.2:42526;rinstance=9ec5b250d716f66e;transport=UDP Peername: ddddd Event: Newstate Privilege: call,all Channel: SIP/ddddd-00000000 ChannelState: 6 ChannelStateDesc: Up CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: ConnectedLineName: Panoramisk tests Uniqueid: 1414510601.2 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALSTATUS Value: ANSWER Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALEDPEERNAME Value: SIP/ddddd-00000000 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALEDPEERNUMBER Value: ddddd Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: Local/259@default-00000000;2 Uniqueid: 1414510601.2 Event: Newstate Privilege: call,all Channel: Local/259@default-00000000;2 ChannelState: 6 ChannelStateDesc: Up CallerIDNum: CallerIDName: Panoramisk tests ConnectedLineNum: 259 ConnectedLineName: S F Uniqueid: 1414510600.1 Event: NewAccountCode Privilege: call,all Channel: SIP/ddddd-00000000 Uniqueid: 1414510601.2 AccountCode: OldAccountCode: Event: Bridge Privilege: call,all Bridgestate: Link Bridgetype: core Channel1: Local/259@default-00000000;2 Channel2: SIP/ddddd-00000000 Uniqueid1: 1414510600.1 Uniqueid2: 1414510601.2 CallerID1: CallerID2: 259 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: BRIDGEPVTCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: Local/259@default-00000000;2 Uniqueid: 1414510601.2 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: BRIDGEPVTCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: Local/259@default-00000000;2 Uniqueid: 1414510601.2 Event: Newstate Privilege: call,all Channel: Local/259@default-00000000;1 ChannelState: 6 ChannelStateDesc: Up CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: ConnectedLineName: Panoramisk tests Uniqueid: 1414510600.0 Event: CEL Privilege: call,all EventName: ANSWER AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: 259 CallerIDrdnis: CallerIDdnid: Exten: s Context: default Channel: SIP/ddddd-00000000 Application: AppDial AppData: (Outgoing Line) EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510601.2 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: default Extension: 254 Priority: 1 Application: Set AppData: XIVO_BASE_CONTEXT=default Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_BASE_CONTEXT Value: default Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: default Extension: 254 Priority: 2 Application: Set AppData: XIVO_BASE_EXTEN=254 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_BASE_EXTEN Value: 254 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: default Extension: 254 Priority: 3 Application: Gosub AppData: user,s,1(147,) Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: LOCAL(ARG1) Value: 147 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: LOCAL(ARGC) Value: 2 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 1 Application: Set AppData: XIVO_DSTID=147 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_DSTID Value: 147 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 2 Application: Set AppData: XIVO_PRESUBR_GLOBAL_NAME=USER Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_PRESUBR_GLOBAL_NAME Value: USER Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 3 Application: Set AppData: CC_EXTEN=254 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: CC_EXTEN Value: 254 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 4 Application: Set AppData: CC_CONTEXT=default Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: CC_CONTEXT Value: default Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 5 Application: Set AppData: XIVO_SRCNUM=259 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_SRCNUM Value: 259 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 6 Application: Set AppData: XIVO_DSTNUM=254 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_DSTNUM Value: 254 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 7 Application: Set AppData: XIVO_CONTEXT=default Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_CONTEXT Value: default Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 8 Application: Set AppData: __XIVO_CALLORIGIN=intern Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: __XIVO_CALLORIGIN Value: intern Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 9 Application: Set AppData: __XIVO_FWD_REFERER=user:147 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: __XIVO_FWD_REFERER Value: user:147 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 10 Application: UserEvent AppData: User,CHANNEL: Local/259@default-00000000;1,XIVO_USERID: ,XIVO_SRCNUM: 259,XIVO_CALLORIGIN: intern,XIVO_DSTID: 147 Uniqueid: 1414510600.0 Event: UserEvent Privilege: user,all UserEvent: User Uniqueid: 1414510600.0 CHANNEL: Local/259@default-00000000;1 XIVO_USERID: XIVO_SRCNUM: 259 XIVO_CALLORIGIN: intern XIVO_DSTID: 147 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 11 Application: GotoIf AppData: ?:noblindxfer Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 13 Application: Set AppData: XIVO_FWD_REFERER_TYPE=user Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_FWD_REFERER_TYPE Value: user Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 14 Application: Set AppData: XIVO_REAL_FROMGROUP=0 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_REAL_FROMGROUP Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 15 Application: Set AppData: XIVO_REAL_FROMQUEUE=0 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;1 Variable: XIVO_REAL_FROMQUEUE Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: Local/259@default-00000000;1 Context: user Extension: s Priority: 16 Application: AGI AppData: agi://127.0.0.1/incoming_user_set_features Uniqueid: 1414510600.0 Event: Masquerade Privilege: call,all Clone: SIP/ddddd-00000000 CloneState: Up Original: Local/259@default-00000000;1 OriginalState: Up Event: Rename Privilege: call,all Channel: SIP/ddddd-00000000 Newname: SIP/ddddd-00000000 Uniqueid: 1414510601.2 Event: Rename Privilege: call,all Channel: Local/259@default-00000000;1 Newname: SIP/ddddd-00000000 Uniqueid: 1414510600.0 Event: Rename Privilege: call,all Channel: SIP/ddddd-00000000 Newname: Local/259@default-00000000;1 Uniqueid: 1414510601.2 Event: NewCallerid Privilege: call,all Channel: SIP/ddddd-00000000 CallerIDNum: 259 CallerIDName: S F Uniqueid: 1414510600.0 CID-CallingPres: 0 (Presentation Allowed, Not Screened) Event: Bridge Privilege: call,all Bridgestate: Unlink Bridgetype: core Channel1: Local/259@default-00000000;2 Channel2: Local/259@default-00000000;1 Uniqueid1: 1414510600.1 Uniqueid2: 1414510601.2 CallerID1: CallerID2: 259 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: ANSWEREDTIME Value: 0 Uniqueid: 1414510600.1 Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALEDTIME Value: 9 Uniqueid: 1414510600.1 Event: HangupRequest Privilege: call,all Channel: Local/259@default-00000000;2 Uniqueid: 1414510600.1 Event: Hangup Privilege: call,all Channel: Local/259@default-00000000;1 Uniqueid: 1414510601.2 CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: ConnectedLineName: Panoramisk tests AccountCode: Cause: 16 Cause-txt: Normal Clearing Event: CEL Privilege: call,all EventName: ANSWER AccountCode: CallerIDnum: CallerIDname: Panoramisk tests CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: Local/259@default-00000000;2 Application: Dial AppData: SIP/ddddd,30,hHt EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510600.1 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: VarSet Privilege: dialplan,all Channel: Local/259@default-00000000;2 Variable: DIALSTATUS Value: ANSWER Uniqueid: 1414510600.1 Event: Dial Privilege: call,all SubEvent: End Channel: Local/259@default-00000000;2 UniqueID: 1414510600.1 DialStatus: ANSWER Event: SoftHangupRequest Privilege: call,all Channel: Local/259@default-00000000;2 Uniqueid: 1414510600.1 Cause: 16 Event: Hangup Privilege: call,all Channel: Local/259@default-00000000;2 Uniqueid: 1414510600.1 CallerIDNum: CallerIDName: Panoramisk tests ConnectedLineNum: 259 ConnectedLineName: S F AccountCode: Cause: 16 Cause-txt: Normal Clearing Event: CEL Privilege: call,all EventName: BRIDGE_START AccountCode: CallerIDnum: CallerIDname: Panoramisk tests CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: Local/259@default-00000000;2 Application: Dial AppData: SIP/ddddd,30,hHt EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510600.1 LinkedID: 1414510600.0 Userfield: Peer: SIP/ddddd-00000000 PeerAccount: Extra: Event: CEL Privilege: call,all EventName: ANSWER AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: 259 Context: default Channel: Local/259@default-00000000;1 Application: AppData: EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 259 Context: default Hint: SIP/ddddd Status: 1 Event: ExtensionStatus Privilege: call,all Exten: *666148 Context: default Hint: SIP/ddddd Status: 1 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 285624360 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 285624360 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1018946091 Command: GET VARIABLE "XIVO_DSTID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1018946091 Command: GET VARIABLE "XIVO_DSTID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1101081066 Command: GET VARIABLE "XIVO_CALLORIGIN" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1101081066 Command: GET VARIABLE "XIVO_CALLORIGIN" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1047468209 Command: GET VARIABLE "XIVO_SRCNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1047468209 Command: GET VARIABLE "XIVO_SRCNUM" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1232065858 Command: GET VARIABLE "XIVO_DSTNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1232065858 Command: GET VARIABLE "XIVO_DSTNUM" ResultCode: 200 Result: Success Event: CEL Privilege: call,all EventName: HANGUP AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: 259 CallerIDrdnis: CallerIDdnid: Exten: Context: user Channel: Local/259@default-00000000;1 Application: AppDial AppData: (Outgoing Line) EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510601.2 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: 16,, Event: CEL Privilege: call,all EventName: CHAN_END AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: 259 CallerIDrdnis: CallerIDdnid: Exten: Context: user Channel: Local/259@default-00000000;1 Application: AppDial AppData: (Outgoing Line) EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510601.2 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: CEL Privilege: call,all EventName: HANGUP AccountCode: CallerIDnum: CallerIDname: Panoramisk tests CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: Local/259@default-00000000;2 Application: AppData: EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510600.1 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: 16,,ANSWER Event: CEL Privilege: call,all EventName: CHAN_END AccountCode: CallerIDnum: CallerIDname: Panoramisk tests CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: Local/259@default-00000000;2 Application: AppData: EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510600.1 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 2086254126 Command: SET VARIABLE "XIVO_DST_USERNUM" "254" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_DST_USERNUM Value: 254 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 2086254126 Command: SET VARIABLE "XIVO_DST_USERNUM" "254" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1935713048 Command: SET VARIABLE "XIVO_DST_FIRSTNAME" "L" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_DST_FIRSTNAME Value: L Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1935713048 Command: SET VARIABLE "XIVO_DST_FIRSTNAME" "L" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1550146534 Command: SET VARIABLE "XIVO_DST_LASTNAME" "G" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_DST_LASTNAME Value: G Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1550146534 Command: SET VARIABLE "XIVO_DST_LASTNAME" "G" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 612125112 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NAME" "L G" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_DST_REDIRECTING_NAME Value: L G Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 612125112 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NAME" "L G" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 522862848 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NUM" "254" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_DST_REDIRECTING_NUM Value: 254 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 522862848 Command: SET VARIABLE "XIVO_DST_REDIRECTING_NUM" "254" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1855626964 Command: SET VARIABLE "XIVO_INTERFACE" "SIP/uuuuu" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_INTERFACE Value: SIP/uuuuu Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1855626964 Command: SET VARIABLE "XIVO_INTERFACE" "SIP/uuuuu" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 539888559 Command: SET VARIABLE "XIVO_CALLOPTIONS" "hHtT" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_CALLOPTIONS Value: hHtT Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 539888559 Command: SET VARIABLE "XIVO_CALLOPTIONS" "hHtT" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1678689466 Command: SET VARIABLE "XIVO_SIMULTCALLS" "5" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_SIMULTCALLS Value: 5 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1678689466 Command: SET VARIABLE "XIVO_SIMULTCALLS" "5" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 460905162 Command: SET VARIABLE "XIVO_RINGSECONDS" "30" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_RINGSECONDS Value: 30 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 460905162 Command: SET VARIABLE "XIVO_RINGSECONDS" "30" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 96555723 Command: SET VARIABLE "XIVO_ENABLEDND" "0" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_ENABLEDND Value: 0 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 96555723 Command: SET VARIABLE "XIVO_ENABLEDND" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1174643013 Command: SET VARIABLE "XIVO_ENABLEVOICEMAIL" "0" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_ENABLEVOICEMAIL Value: 0 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1174643013 Command: SET VARIABLE "XIVO_ENABLEVOICEMAIL" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 714604477 Command: SET VARIABLE "XIVO_MAILBOX" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_MAILBOX Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 714604477 Command: SET VARIABLE "XIVO_MAILBOX" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 56976057 Command: SET VARIABLE "XIVO_MAILBOX_CONTEXT" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_MAILBOX_CONTEXT Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 56976057 Command: SET VARIABLE "XIVO_MAILBOX_CONTEXT" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1163065498 Command: SET VARIABLE "XIVO_USEREMAIL" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_USEREMAIL Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1163065498 Command: SET VARIABLE "XIVO_USEREMAIL" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 363454558 Command: SET VARIABLE "XIVO_ENABLEUNC" "0" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_ENABLEUNC Value: 0 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 363454558 Command: SET VARIABLE "XIVO_ENABLEUNC" "0" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1301637522 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_UNC_ACTION Value: none Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1301637522 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1050105169 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_UNC_ACTIONARG1 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1050105169 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1741007012 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_UNC_ACTIONARG2 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1741007012 Command: SET VARIABLE "XIVO_FWD_USER_UNC_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 322250224 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_BUSY_ACTION Value: none Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 322250224 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1279828525 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_BUSY_ISDA Value: 1 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1279828525 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1939376719 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_BUSY_ACTIONARG1 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1939376719 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 2028455323 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_BUSY_ACTIONARG2 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 2028455323 Command: SET VARIABLE "XIVO_FWD_USER_BUSY_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 511622874 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_NOANSWER_ACTION Value: none Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 511622874 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1889424603 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_NOANSWER_ISDA Value: 1 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1889424603 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 459357547 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_NOANSWER_ACTIONARG1 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 459357547 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 703471586 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_NOANSWER_ACTIONARG2 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 703471586 Command: SET VARIABLE "XIVO_FWD_USER_NOANSWER_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1561213152 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CONGESTION_ACTION Value: none Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1561213152 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 2138230449 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CONGESTION_ISDA Value: 1 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 2138230449 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1969255075 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CONGESTION_ACTIONARG1 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1969255075 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 307198792 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CONGESTION_ACTIONARG2 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 307198792 Command: SET VARIABLE "XIVO_FWD_USER_CONGESTION_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1964803695 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTION" "none" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CHANUNAVAIL_ACTION Value: none Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1964803695 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTION" "none" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1629533389 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ISDA" "1" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CHANUNAVAIL_ISDA Value: 1 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1629533389 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ISDA" "1" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 750551155 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG1" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG1 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 750551155 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG1" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1493427405 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG2" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG2 Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1493427405 Command: SET VARIABLE "XIVO_FWD_USER_CHANUNAVAIL_ACTIONARG2" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 371352294 Command: SET VARIABLE "CHANNEL(musicclass)" "default" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 371352294 Command: SET VARIABLE "CHANNEL(musicclass)" "default" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1488827366 Command: SET VARIABLE "XIVO_CALLRECORDFILE" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_CALLRECORDFILE Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1488827366 Command: SET VARIABLE "XIVO_CALLRECORDFILE" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 728323017 Command: SET VARIABLE "XIVO_USERPREPROCESS_SUBROUTINE" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_USERPREPROCESS_SUBROUTINE Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 728323017 Command: SET VARIABLE "XIVO_USERPREPROCESS_SUBROUTINE" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1695395554 Command: SET VARIABLE "XIVO_MOBILEPHONENUMBER" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_MOBILEPHONENUMBER Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1695395554 Command: SET VARIABLE "XIVO_MOBILEPHONENUMBER" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1505356270 Command: GET VARIABLE "XIVO_PATH" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1505356270 Command: GET VARIABLE "XIVO_PATH" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 322112498 Command: SET VARIABLE "XIVO_PATH" "user" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_PATH Value: user Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 322112498 Command: SET VARIABLE "XIVO_PATH" "user" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 134630649 Command: SET VARIABLE "XIVO_PATH_ID" "147" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_PATH_ID Value: 147 Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 134630649 Command: SET VARIABLE "XIVO_PATH_ID" "147" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1289750731 Command: VERBOSE "AGI handler 'incoming_user_set_features' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1289750731 Command: VERBOSE "AGI handler 'incoming_user_set_features' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 17 Application: NoOp AppData: filename call recording: none Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 18 Application: AGI AppData: agi://127.0.0.1/check_schedule Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 580837644 Command: GET VARIABLE "XIVO_PATH" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 580837644 Command: GET VARIABLE "XIVO_PATH" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 126748224 Command: GET VARIABLE "XIVO_PATH_ID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 126748224 Command: GET VARIABLE "XIVO_PATH_ID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 529861623 Command: SET VARIABLE "XIVO_SCHEDULE_STATUS" "opened" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_SCHEDULE_STATUS Value: opened Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 529861623 Command: SET VARIABLE "XIVO_SCHEDULE_STATUS" "opened" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 247671395 Command: SET VARIABLE "XIVO_PATH" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_PATH Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 247671395 Command: SET VARIABLE "XIVO_PATH" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1521265820 Command: VERBOSE "AGI handler 'check_schedule' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1521265820 Command: VERBOSE "AGI handler 'check_schedule' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 19 Application: GotoIf AppData: 0?CLOSED,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 20 Application: Gosub AppData: xivo-ring_type_set,s,1 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-ring_type_set Extension: s Priority: 1 Application: SIPRemoveHeader AppData: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-ring_type_set Extension: s Priority: 2 Application: AGI AppData: agi://127.0.0.1/getring Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 856664788 Command: GET VARIABLE "XIVO_DSTNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 856664788 Command: GET VARIABLE "XIVO_DSTNUM" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1364230963 Command: GET VARIABLE "XIVO_CONTEXT" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1364230963 Command: GET VARIABLE "XIVO_CONTEXT" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 614123106 Command: GET VARIABLE "XIVO_CALLORIGIN" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 614123106 Command: GET VARIABLE "XIVO_CALLORIGIN" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 761458624 Command: GET VARIABLE "XIVO_FWD_REFERER" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 761458624 Command: GET VARIABLE "XIVO_FWD_REFERER" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1662038702 Command: GET VARIABLE "XIVO_CALLFORWARDED" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1662038702 Command: GET VARIABLE "XIVO_CALLFORWARDED" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 2048818366 Command: SET VARIABLE "XIVO_RINGTYPE" "" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_RINGTYPE Value: Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 2048818366 Command: SET VARIABLE "XIVO_RINGTYPE" "" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1199810507 Command: VERBOSE "Using the native phone ring tone" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1199810507 Command: VERBOSE "Using the native phone ring tone" 1 ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1443535372 Command: VERBOSE "AGI handler 'getring' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1443535372 Command: VERBOSE "AGI handler 'getring' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-ring_type_set Extension: s Priority: 3 Application: GotoIf AppData: ?:exit Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-ring_type_set Extension: s Priority: 8 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 21 Application: Gosub AppData: xivo-subroutine,s,1() Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subroutine Extension: s Priority: 1 Application: GotoIf AppData: ?:nosubroutine Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subroutine Extension: s Priority: 4 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 22 Application: Set AppData: XIVO_RINGSECONDS=30 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_RINGSECONDS Value: 30 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 23 Application: Gosub AppData: xivo-user_rights_check,s,1 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-user_rights_check Extension: s Priority: 1 Application: AGI AppData: agi://127.0.0.1/user_set_call_rights Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1429765793 Command: GET VARIABLE "XIVO_USERID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1429765793 Command: GET VARIABLE "XIVO_USERID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 786282626 Command: GET VARIABLE "XIVO_DSTNUM" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 786282626 Command: GET VARIABLE "XIVO_DSTNUM" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 647842738 Command: GET VARIABLE "XIVO_OUTCALLID" Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 647842738 Command: GET VARIABLE "XIVO_OUTCALLID" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1467594794 Command: SET VARIABLE "XIVO_AUTHORIZATION" "ALLOW" Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: XIVO_AUTHORIZATION Value: ALLOW Uniqueid: 1414510600.0 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1467594794 Command: SET VARIABLE "XIVO_AUTHORIZATION" "ALLOW" ResultCode: 200 Result: Success Event: AGIExec Privilege: agi,all SubEvent: Start Channel: SIP/ddddd-00000000 CommandId: 1574737600 Command: VERBOSE "AGI handler 'user_set_call_rights' successfully executed" 1 Event: AGIExec Privilege: agi,all SubEvent: End Channel: SIP/ddddd-00000000 CommandId: 1574737600 Command: VERBOSE "AGI handler 'user_set_call_rights' successfully executed" 1 ResultCode: 200 Result: Success Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: AGISTATUS Value: SUCCESS Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-user_rights_check Extension: s Priority: 2 Application: GotoIf AppData: ALLOW?:error,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-user_rights_check Extension: s Priority: 3 Application: GotoIf AppData: 1?allow,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-user_rights_check Extension: allow Priority: 1 Application: NoOp AppData: User allowed to make call Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-user_rights_check Extension: allow Priority: 2 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 24 Application: GotoIf AppData: 0?dial_from_queue,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 25 Application: GotoIf AppData: 0?xivo-user_callfilter,s,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 26 Application: GotoIf AppData: ?:28 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 28 Application: GotoIf AppData: 0?DND,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 29 Application: DumpChan AppData: 7 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 30 Application: NoOp AppData: XIVO_ENABLEUNC: 0 XIVO_SRCNUM: 259 XIVO_FWD_USER_UNC_ACTIONARG: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 31 Application: GotoIf AppData: 0?UNC,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 32 Application: GotoIf AppData: 0?dial_from_group,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 33 Application: GotoIf AppData: 0?BUSY,1 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 34 Application: Set AppData: OUTBOUND_GROUP_ONCE=147@XIVO_USER Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: OUTBOUND_GROUP_ONCE Value: 147@XIVO_USER Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 35 Application: Gosub AppData: xivo-connectedline,s,1(254,L G) Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: 254 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: L G Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 2 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-connectedline Extension: s Priority: 1 Application: NoOp AppData: Generic subroutine for connectedline Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-connectedline Extension: s Priority: 2 Application: Set AppData: CONNECTEDLINE(all,i)=L G <254> Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-connectedline Extension: s Priority: 3 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 36 Application: Gosub AppData: xivo-global-subroutine,s,1 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-global-subroutine Extension: s Priority: 1 Application: GotoIf AppData: 1?:return Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-global-subroutine Extension: s Priority: 2 Application: GotoIf AppData: USER?:return Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-global-subroutine Extension: s Priority: 3 Application: GotoIf AppData: xivo-subrgbl-user?:return Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-global-subroutine Extension: s Priority: 4 Application: GotoIf AppData: 1?:return Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-global-subroutine Extension: s Priority: 5 Application: Gosub AppData: xivo-subrgbl-user,s,1 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subrgbl-user Extension: s Priority: 1 Application: Verbose AppData: 3, "-= ALLOcloud preprocess subroutine groups =-" Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subrgbl-user Extension: s Priority: 2 Application: Verbose AppData: 3, "-= Test if the user is busy =-" Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subrgbl-user Extension: s Priority: 3 Application: Set AppData: COUNT_BUSY=NOT_INUSE Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: COUNT_BUSY Value: NOT_INUSE Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subrgbl-user Extension: s Priority: 4 Application: GotoIf AppData: 1?return Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subrgbl-user Extension: s Priority: 9 Application: Verbose AppData: 3, "-= Returning to the original call-flow =-" Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-subrgbl-user Extension: s Priority: 10 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: xivo-global-subroutine Extension: s Priority: 6 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 37 Application: Gosub AppData: originate-caller-id,s,1 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG1) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARG2) Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: LOCAL(ARGC) Value: 0 Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: originate-caller-id Extension: s Priority: 1 Application: GotoIf AppData: 0?:name Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: originate-caller-id Extension: s Priority: 3 Application: GotoIf AppData: 0?:end Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: originate-caller-id Extension: s Priority: 5 Application: Return AppData: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: GOSUB_RETVAL Value: Uniqueid: 1414510600.0 Event: Newexten Privilege: dialplan,all Channel: SIP/ddddd-00000000 Context: user Extension: s Priority: 38 Application: Dial AppData: SIP/uuuuu,30,hHtT Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALSTATUS Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDPEERNUMBER Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDPEERNAME Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: ANSWEREDTIME Value: Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDTIME Value: Uniqueid: 1414510600.0 Event: Newchannel Privilege: call,all Channel: SIP/uuuuu-00000001 ChannelState: 0 ChannelStateDesc: Down CallerIDNum: 254 CallerIDName: L G AccountCode: Exten: Context: default Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: SIPCALLID Value: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: XIVO_USERID Value: 147 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: PICKUPMARK Value: 254%default Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: TRANSFER_CONTEXT Value: default Uniqueid: 1414510609.3 Event: ChannelUpdate Privilege: system,all Channel: SIP/uuuuu-00000001 Uniqueid: 1414510609.3 Channeltype: SIP SIPcallid: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 SIPfullcontact: sip:uuuuu@192.168.0.2:5060 Event: ChannelUpdate Privilege: system,all Channel: SIP/uuuuu-00000001 Channeltype: SIP SIPcallid: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 SIPfullcontact: sip:uuuuu@192.168.0.2:5060 Peername: uuuuu Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: DIALEDPEERNUMBER Value: uuuuu Uniqueid: 1414510609.3 Event: Dial Privilege: call,all SubEvent: Begin Channel: SIP/ddddd-00000000 Destination: SIP/uuuuu-00000001 CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: 254 ConnectedLineName: L G UniqueID: 1414510600.0 DestUniqueID: 1414510609.3 Dialstring: uuuuu Event: CEL Privilege: call,all EventName: CHAN_START AccountCode: CallerIDnum: 254 CallerIDname: L G CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: default Channel: SIP/uuuuu-00000001 Application: AppData: EventTime: 2014-10-28 16:36:49 AMAFlags: DOCUMENTATION UniqueID: 1414510609.3 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 254 Context: default Hint: SIP/uuuuu Status: 8 Event: ExtensionStatus Privilege: call,all Exten: *666147 Context: default Hint: SIP/uuuuu Status: 8 Event: SIPRinging Privilege: system,all Peer: SIP/uuuuu Event: Newstate Privilege: call,all Channel: SIP/uuuuu-00000001 ChannelState: 5 ChannelStateDesc: Ringing CallerIDNum: 254 CallerIDName: L G ConnectedLineNum: 259 ConnectedLineName: S F Uniqueid: 1414510609.3 Event: ChannelUpdate Privilege: system,all Channel: SIP/uuuuu-00000001 Channeltype: SIP Uniqueid: 1414510609.3 SIPcallid: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 SIPfullcontact: sip:uuuuu@192.168.2.27:5060 Peername: uuuuu Event: Newstate Privilege: call,all Channel: SIP/uuuuu-00000001 ChannelState: 6 ChannelStateDesc: Up CallerIDNum: 254 CallerIDName: L G ConnectedLineNum: 259 ConnectedLineName: S F Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALSTATUS Value: ANSWER Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDPEERNAME Value: SIP/uuuuu-00000001 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDPEERNUMBER Value: uuuuu Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: SIP/uuuuu-00000001 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510609.3 Event: NewAccountCode Privilege: call,all Channel: SIP/uuuuu-00000001 Uniqueid: 1414510609.3 AccountCode: OldAccountCode: Event: Bridge Privilege: call,all Bridgestate: Link Bridgetype: core Channel1: SIP/ddddd-00000000 Channel2: SIP/uuuuu-00000001 Uniqueid1: 1414510600.0 Uniqueid2: 1414510609.3 CallerID1: 259 CallerID2: 254 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: SIP/uuuuu-00000001 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPVTCALLID Value: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPVTCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: SIP/uuuuu-00000001 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPVTCALLID Value: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPVTCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510609.3 Event: CEL Privilege: call,all EventName: ANSWER AccountCode: CallerIDnum: 254 CallerIDname: L G CallerIDani: 254 CallerIDrdnis: CallerIDdnid: Exten: s Context: default Channel: SIP/uuuuu-00000001 Application: AppDial AppData: (Outgoing Line) EventTime: 2014-10-28 16:36:53 AMAFlags: DOCUMENTATION UniqueID: 1414510609.3 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: CEL Privilege: call,all EventName: BRIDGE_START AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: SIP/ddddd-00000000 Application: Dial AppData: SIP/uuuuu,30,hHtT EventTime: 2014-10-28 16:36:53 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: SIP/uuuuu-00000001 PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 254 Context: default Hint: SIP/uuuuu Status: 1 Event: ExtensionStatus Privilege: call,all Exten: *666147 Context: default Hint: SIP/uuuuu Status: 1 Event: Bridge Privilege: call,all Bridgestate: Unlink Bridgetype: core Channel1: SIP/ddddd-00000000 Channel2: SIP/uuuuu-00000001 Uniqueid1: 1414510600.0 Uniqueid2: 1414510609.3 CallerID1: 259 CallerID2: 254 Event: Bridge Privilege: call,all Bridgestate: Link Bridgetype: core Channel1: SIP/ddddd-00000000 Channel2: SIP/uuuuu-00000001 Uniqueid1: 1414510600.0 Uniqueid2: 1414510609.3 CallerID1: 259 CallerID2: 254 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: SIP/uuuuu-00000001 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPVTCALLID Value: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPVTCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPEER Value: SIP/uuuuu-00000001 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: BRIDGEPVTCALLID Value: 414b3fd56f10332d23de4bda18636dc0@192.168.0.1:5060 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPEER Value: SIP/ddddd-00000000 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: BRIDGEPVTCALLID Value: 417341300e78b1ef0389221173d5bf6f@192.168.0.1:5060 Uniqueid: 1414510609.3 Event: RTCPReceived Privilege: reporting,all From: 192.168.0.2:58873 PT: 200(Sender Report) ReceptionReports: 1 SenderSSRC: 16777217 FractionLost: 1 PacketsLost: 1 HighestSequence: 36085 SequenceNumberCycles: 0 IAJitter: 0 LastSR: 0.0000000000 DLSR: 0.0000(sec) Event: RTCPSent Privilege: reporting,all To: 192.168.0.2:58873 OurSSRC: 842807399 SentNTP: 1414510614.1545428992 SentRTP: 32160 SentPackets: 201 SentOctets: 32160 ReportBlock: FractionLost: 0 CumulativeLoss: 0 IAJitter: 0.0084 TheirLastSR: 915837296 DLSR: 0.3830 (sec) Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOS Value: ssrc=1171868064;themssrc=0;lp=0;rxjitter=0.000000;rxcount=0;txjitter=0.000000;txcount=227;rlp=0;rtt=0.000000 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSBRIDGED Value: ssrc=1171868064;themssrc=0;lp=0;rxjitter=0.000000;rxcount=0;txjitter=0.000000;txcount=227;rlp=0;rtt=0.000000 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSJITTER Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSJITTERBRIDGED Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSLOSS Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSLOSSBRIDGED Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSRTT Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSRTTBRIDGED Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOS Value: ssrc=842807399;themssrc=1853077823;lp=0;rxjitter=0.000000;rxcount=425;txjitter=0.009670;txcount=201;rlp=1;rtt=0.000000 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSBRIDGED Value: ssrc=842807399;themssrc=1853077823;lp=0;rxjitter=0.000000;rxcount=425;txjitter=0.009670;txcount=201;rlp=1;rtt=0.000000 Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSJITTER Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSJITTERBRIDGED Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSLOSS Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSLOSSBRIDGED Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1414510609.3 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSRTT Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/uuuuu-00000001 Variable: RTPAUDIOQOSRTTBRIDGED Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1414510609.3 Event: HangupRequest Privilege: call,all Channel: SIP/uuuuu-00000001 Uniqueid: 1414510609.3 Event: Bridge Privilege: call,all Bridgestate: Unlink Bridgetype: core Channel1: SIP/ddddd-00000000 Channel2: SIP/uuuuu-00000001 Uniqueid1: 1414510600.0 Uniqueid2: 1414510609.3 CallerID1: 259 CallerID2: 254 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: ANSWEREDTIME Value: 5 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALEDTIME Value: 9 Uniqueid: 1414510600.0 Event: CEL Privilege: call,all EventName: BRIDGE_END AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: SIP/ddddd-00000000 Application: Dial AppData: SIP/uuuuu,30,hHtT EventTime: 2014-10-28 16:36:58 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: SIP/uuuuu-00000001 PeerAccount: Extra: Event: Hangup Privilege: call,all Channel: SIP/uuuuu-00000001 Uniqueid: 1414510609.3 CallerIDNum: 254 CallerIDName: L G ConnectedLineNum: 259 ConnectedLineName: S F AccountCode: Cause: 16 Cause-txt: Normal Clearing Event: CEL Privilege: call,all EventName: HANGUP AccountCode: CallerIDnum: 254 CallerIDname: L G CallerIDani: 254 CallerIDrdnis: CallerIDdnid: Exten: Context: user Channel: SIP/uuuuu-00000001 Application: AppDial AppData: (Outgoing Line) EventTime: 2014-10-28 16:36:58 AMAFlags: DOCUMENTATION UniqueID: 1414510609.3 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: 16,SIP/uuuuu-00000001, Event: CEL Privilege: call,all EventName: CHAN_END AccountCode: CallerIDnum: 254 CallerIDname: L G CallerIDani: 254 CallerIDrdnis: CallerIDdnid: Exten: Context: user Channel: SIP/uuuuu-00000001 Application: AppDial AppData: (Outgoing Line) EventTime: 2014-10-28 16:36:58 AMAFlags: DOCUMENTATION UniqueID: 1414510609.3 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 254 Context: default Hint: SIP/uuuuu Status: 0 Event: ExtensionStatus Privilege: call,all Exten: *666147 Context: default Hint: SIP/uuuuu Status: 0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: DIALSTATUS Value: ANSWER Uniqueid: 1414510600.0 Event: Dial Privilege: call,all SubEvent: End Channel: SIP/ddddd-00000000 UniqueID: 1414510600.0 DialStatus: ANSWER Event: SoftHangupRequest Privilege: call,all Channel: SIP/ddddd-00000000 Uniqueid: 1414510600.0 Cause: 16 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOS Value: ssrc=842807399;themssrc=1853077823;lp=0;rxjitter=0.000000;rxcount=425;txjitter=0.009670;txcount=201;rlp=1;rtt=0.000000 Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSJITTER Value: minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSLOSS Value: minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOSRTT Value: minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000; Uniqueid: 1414510600.0 Event: VarSet Privilege: dialplan,all Channel: SIP/ddddd-00000000 Variable: RTPAUDIOQOS Value: ssrc=842807399;themssrc=1853077823;lp=0;rxjitter=0.000000;rxcount=425;txjitter=0.009670;txcount=201;rlp=1;rtt=0.000000 Uniqueid: 1414510600.0 Event: Hangup Privilege: call,all Channel: SIP/ddddd-00000000 Uniqueid: 1414510600.0 CallerIDNum: 259 CallerIDName: S F ConnectedLineNum: 254 ConnectedLineName: L G AccountCode: Cause: 16 Cause-txt: Normal Clearing Event: CEL Privilege: call,all EventName: HANGUP AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: SIP/ddddd-00000000 Application: AppData: EventTime: 2014-10-28 16:36:58 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: 16,SIP/uuuuu-00000001,ANSWER Event: CEL Privilege: call,all EventName: CHAN_END AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: SIP/ddddd-00000000 Application: AppData: EventTime: 2014-10-28 16:36:58 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: CEL Privilege: call,all EventName: LINKEDID_END AccountCode: CallerIDnum: 259 CallerIDname: S F CallerIDani: CallerIDrdnis: CallerIDdnid: Exten: s Context: user Channel: SIP/ddddd-00000000 Application: AppData: EventTime: 2014-10-28 16:36:58 AMAFlags: DOCUMENTATION UniqueID: 1414510600.0 LinkedID: 1414510600.0 Userfield: Peer: PeerAccount: Extra: Event: ExtensionStatus Privilege: call,all Exten: 259 Context: default Hint: SIP/ddddd Status: 0 Event: ExtensionStatus Privilege: call,all Exten: *666148 Context: default Hint: SIP/ddddd Status: 0panoramisk-1.4/tests/fixtures/ping.yaml0000644000175000017500000000014114103000544020561 0ustar gawelgawel00000000000000Response: Success ActionID: action/transaction_uid/1/1 Ping: Pong Timestamp: 1409169929.412068 panoramisk-1.4/tests/fixtures/pjsip_show_endpoint.yaml0000644000175000017500000000644214103000544023723 0ustar gawelgawel00000000000000Response: Success ActionID: action/transaction_uid/1/1 EventList: start Message: Following are Events for each object associated with the the Endpoint Event: EndpointDetail ActionID: action/transaction_uid/1/1 ObjectType: endpoint ObjectName: XXXXX TimersSessExpires: 1800 DeviceStateBusyAt: 0 DtlsCipher: FromDomain: DtlsRekey: 0 DtlsFingerprint: SHA-256 DirectMediaMethod: invite SendRpid: false PickupGroup: SdpSession: ALLOcloud v3.0 DtlsVerify: No MessageContext: Mailboxes: YYYY NamedPickupGroup: RecordOnFeature: automixmon DtlsPrivateKey: NamedCallGroup: T38UdptlMaxdatagram: 0 MediaEncryptionOptimistic: false Aors: XXXXX RpidImmediate: false OutboundProxy: IdentifyBy: username InbandProgress: false RtpSymmetric: true Transport: tcp_5060 RtpKeepalive: 0 T38UdptlEc: none FaxDetect: false T38UdptlNat: false AllowTransfer: true TosVideo: 0 SrtpTag32: false TimersMinSe: 90 CallGroup: SubMinExpiry: 0 100rel: yes DirectMedia: false RtpTimeoutHold: 0 G726NonStandard: false DtmfMode: rfc4733 RtpTimeout: 0 DtlsCertFile: MediaEncryption: no MediaUseReceivedTransport: false DirectMediaGlareMitigation: none TrustIdInbound: false ForceAvp: false RecordOffFeature: automixmon SendDiversion: true Language: en_US MwiFromUser: RtpIpv6: false IceSupport: false Callerid: "XXXX" AggregateMwi: true OneTouchRecording: false CosVideo: 0 Accountcode: Allow: (alaw|opus|speex|vp8|h264) RewriteContact: true T38UdptlIpv6: false ToneZone: UserEqPhone: false AllowSubscribe: true RtpEngine: asterisk Auth: XXXXX FromUser: DisableDirectMediaOnNat: false UsePtime: false OutboundAuth: MediaAddress: TosAudio: 0 DtlsCaPath: DtlsSetup: active ForceRport: true ConnectedLineMethod: invite CalleridTag: Timers: yes SdpOwner: - TrustIdOutbound: false UseAvpf: false Context: default MohSuggest: default SendPai: false T38Udptl: false DtlsCaFile: CalleridPrivacy: allowed_not_screened CosAudio: 0 DeviceState: Not in use ActiveChannels: Event: AuthDetail ActionID: action/transaction_uid/1/1 ObjectType: auth ObjectName: XXXXX Md5Cred: Realm: asterisk AuthType: userpass Password: ZZZZZZZZZZZ NonceLifetime: 32 Username: XXXXX EndpointName: XXXXX Event: TransportDetail ActionID: action/transaction_uid/1/1 ObjectType: transport ObjectName: tcp_5060 WebsocketWriteTimeout: 100 Cos: 0 Protocol: tcp Domain: VerifyServer: No Bind: 0.0.0.0:5060 PrivKeyFile: Method: unspecified RequireClientCert: No Tos: 0 CaListPath: Cipher: ExternalSignalingPort: 0 Password: CertFile: VerifyClient: No ExternalSignalingAddress: AsyncOperations: 1 ExternalMediaAddress: CaListFile: LocalNet: EndpointName: XXXXX Event: AorDetail ActionID: action/transaction_uid/1/1 ObjectType: aor ObjectName: XXXXX SupportPath: false DefaultExpiration: 3600 QualifyTimeout: 3.000000 Mailboxes: MinimumExpiration: 60 OutboundProxy: MaximumExpiration: 7200 QualifyFrequency: 0 AuthenticateQualify: false Contacts: XXXXX/sip:XXXXX@A.B.C.D:46365;transport=TCP;rinstance=RRRRRR MaxContacts: 10 RemoveExisting: false TotalContacts: 1 ContactsRegistered: 1 EndpointName: XXXXX Event: ContactStatusDetail ActionID: action/transaction_uid/1/1 AOR: XXXXX URI: sip:XXXXX@A.B.C.D:46365;transport=TCP;rinstance=RRRRRR Status: Unknown RoundtripUsec: N/A EndpointName: XXXXX Event: EndpointDetailComplete ActionID: action/transaction_uid/1/1 EventList: Complete ListItems: 5 panoramisk-1.4/tests/fixtures/queue_status.yaml0000644000175000017500000000363314103000544022364 0ustar gawelgawel00000000000000Response: Success ActionID: action/transaction_uid/1/1 Message: Queue status will follow Event: QueueParams Queue: xxxxxxxxxxxxxxxx-tous Max: 0 Strategy: ringall Calls: 0 Holdtime: 3 TalkTime: 303 Completed: 60 Abandoned: 5 ServiceLevel: 0 ServicelevelPerf: 0.0 Weight: 0 ActionID: action/transaction_uid/1/1 Event: QueueMember Queue: xxxxxxxxxxxxxxxx-tous Name: Agent/220 Location: Local/id-9@agentcallback StateInterface: SIP/iiiiiiiiiii Membership: dynamic Penalty: 0 CallsTaken: 2 LastCall: 1413884970 Status: 1 Paused: 0 Skills: agent-9 ActionID: action/transaction_uid/1/1 Event: QueueMember Queue: xxxxxxxxxxxxxxxx-tous Name: Agent/213 Location: Local/id-3@agentcallback StateInterface: SIP/ijfptg Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-3 ActionID: action/transaction_uid/1/1 Event: QueueMember Queue: xxxxxxxxxxxxxxxx-tous Name: Agent/859 Location: Local/id-7@agentcallback StateInterface: SIP/rrrrrrr Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-7 ActionID: action/transaction_uid/1/1 Event: QueueMember Queue: xxxxxxxxxxxxxxxx-tous Name: Agent/214 Location: Local/id-4@agentcallback StateInterface: SIP/6r0vs5 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 1 Paused: 0 Skills: agent-4 ActionID: action/transaction_uid/1/1 Event: QueueMember Queue: xxxxxxxxxxxxxxxx-tous Name: Agent/333 Location: Local/id-10@agentcallback StateInterface: SIP/qqqqqq Membership: dynamic Penalty: 0 CallsTaken: 8 LastCall: 1413758765 Status: 1 Paused: 0 Skills: agent-10 ActionID: action/transaction_uid/1/1 Event: QueueMember Queue: xxxxxxxxxxxxxxxx-tous Name: Agent/999 Location: Local/id-12@agentcallback StateInterface: SIP/000000 Membership: dynamic Penalty: 0 CallsTaken: 0 LastCall: 0 Status: 5 Paused: 1 Skills: agent-12 ActionID: action/transaction_uid/1/1 Event: QueueStatusComplete ActionID: action/transaction_uid/1/1 panoramisk-1.4/tests/fixtures/rasterisk_command.yaml0000644000175000017500000000042514103000544023336 0ustar gawelgawel00000000000000Action: Command ActionID: generated_id Command: core show channels Response: Follows Privilege: Command ActionID: generated_id Channel Location State Application(Data) 0 active channels 0 active calls 2 calls processed --END COMMAND-- panoramisk-1.4/tests/fixtures/sip_notify.yaml0000644000175000017500000000066714103000544022024 0ustar gawelgawel00000000000000Action: SIPnotify Channel: SIP/nnnnnn Variable: Content= Variable: Content=This is a test for pushing text to a phone. Variable: Content=Push test Variable: Content= Variable: Content= Variable: Content-Type=application/xml Variable: Event=Yealink-xml Response: Success Message: Notify Sent panoramisk-1.4/tests/test_connection.py0000644000175000017500000001122514103000544020644 0ustar gawelgawel00000000000000import pytest import socket import asyncio import contextlib from panoramisk import Manager from panoramisk import utils from panoramisk.actions import Action def unused_tcp_port_factory(): """Find an unused localhost TCP port from 1024-65535 and return it.""" with contextlib.closing(socket.socket()) as sock: sock.bind(('127.0.0.1', 0)) return sock.getsockname()[1] def message(msg): EOL = utils.EOL.encode('utf8') return EOL.join([l.strip() for l in msg.strip().split(b'\n')]) + EOL + EOL def login(action_id): return message(b''' Response: Success ActionID: ''' + action_id.encode('utf8') + b''' Message: Authentication accepted ''') def resp(action_id): return message(b''' Response: Success ActionID: ''' + action_id.encode('utf8') + b''' Message: Resp ''') def pong(action_id): return message(b''' Response: Success ActionID: ''' + action_id.encode('utf8') + b''' Ping: Pong Timestamp: 1409169929.412068 ''') class Event: def __init__(self, event): self.event = event class _Asterisk(asyncio.Protocol): def connection_made(self, transport): self.uuid = transport.get_extra_info('peername') self.transport = transport self.factory.clients[self.uuid] = self if not self.factory.started.done(): self.factory.started.set_result(True) def data_received(self, data): data = data.decode('utf8') data = data.split(utils.EOL + utils.EOL) if data: if not self.factory._data_received.done(): self.factory._data_received.set_result(True) for line in data: if not line.strip(): continue a = Action() for kv in line.split('\n'): if ':' in kv: k, v = kv.split(':', 1) a[k] = v.strip() self.factory.actions.append(a) print(repr(a)) # debug if 'action' in a: if a['action'] == 'Login': message = login(a['actionid']) elif a['action'] == 'Ping': message = pong(a['actionid']) else: message = resp(a['actionid']) print(repr(message)) # debug self.transport.write(message) class Asterisk(object): clients = {} def __init__(self, loop, port): self.loop = loop self.port = port self.protocol = None @property def client(self): return list(self.clients.values())[0] async def start(self): self.actions = [] self.clients = {} self.started = asyncio.Future() self._data_received = asyncio.Future() self.protocol = _Asterisk() self.protocol.factory = self await self.loop.create_server( lambda: self.protocol, '127.0.0.1', self.port) return self.started async def data_received(self): self._data_received = asyncio.Future() await self._data_received return self._data_received async def stop(self): for client in self.clients.values(): client.transport.close() @pytest.mark.asyncio async def test_reconnection_without_lost(event_loop): unused_tcp_port = unused_tcp_port_factory() print('Start server on %s' % unused_tcp_port) manager = Manager(loop=event_loop, host='127.0.0.1', port=unused_tcp_port, username='user', secret='secret') server = Asterisk(event_loop, unused_tcp_port) await server.start() await manager.connect() await server.data_received() print(server.actions) login = server.actions[0] assert login['action'] == 'Login' unused_tcp_port = unused_tcp_port_factory() print('Restart server on %s' % unused_tcp_port) server.port = unused_tcp_port manager.config['port'] = unused_tcp_port await server.stop() manager.send_action({'Action': 'Ping'}) f = manager.send_action({'Action': 'Test', 'Command': 'test'}) fully_booted = Event('FullyBooted') await asyncio.sleep(.1) assert manager.awaiting_actions await server.start() await asyncio.sleep(2) assert manager.awaiting_actions manager.dispatch(fully_booted) await asyncio.sleep(.5) assert not manager.awaiting_actions resp = await f await server.stop() login2 = server.actions[0] assert login2['action'] == 'Login' assert login['actionid'] != login2['actionid'] test_action = server.actions[-1] assert test_action.id == resp.id assert test_action['action'] == 'Test' panoramisk-1.4/tests/test_fast_agi.py0000644000175000017500000000326514103000544020267 0ustar gawelgawel00000000000000import asyncio import pytest from panoramisk.fast_agi import Application FAST_AGI_PAYLOAD = b'''agi_network: yes agi_network_script: call_waiting agi_request: agi://127.0.0.1:4574/call_waiting agi_channel: SIP/xxxxxx-00000000 agi_language: en_US agi_type: SIP agi_uniqueid: 1437920906.0 agi_version: asterisk agi_callerid: 201 agi_calleridname: user 201 agi_callingpres: 0 agi_callingani2: 0 agi_callington: 0 agi_callingtns: 0 agi_dnid: 9011 agi_rdnis: unknown agi_context: default agi_extension: 9011 agi_priority: 2 agi_enhanced: 0.0 agi_accountcode: default agi_threadid: -1260881040 agi_arg_1: answered ''' async def call_waiting(request): r = await request.send_command('ANSWER') v = {'msg': '', 'result': ('0', ''), 'status_code': 200} assert r == v async def fake_asterisk_client(loop, unused_tcp_port): reader, writer = await asyncio.open_connection( '127.0.0.1', unused_tcp_port) # send headers writer.write(FAST_AGI_PAYLOAD) # read it back msg_back = await reader.readline() writer.write(b'100 Trying...\n') writer.write(b'200 result=0\n') writer.close() return msg_back @pytest.mark.asyncio async def test_fast_agi_application(event_loop, unused_tcp_port): fa_app = Application(loop=event_loop) fa_app.add_route('call_waiting', call_waiting) server = await asyncio.start_server(fa_app.handler, '127.0.0.1', unused_tcp_port) msg_back = await fake_asterisk_client(event_loop, unused_tcp_port) assert b'ANSWER\n' == msg_back server.close() await server.wait_closed() await asyncio.sleep(1) # Wait the end of endpoint panoramisk-1.4/tests/test_manager.py0000644000175000017500000001217114103000544020120 0ustar gawelgawel00000000000000# -*- coding: utf-8 -*- import os import pytest import asyncio from panoramisk import testing from panoramisk import message test_dir = os.path.join(os.path.dirname(__file__), 'fixtures') @pytest.fixture def manager(request, event_loop): def manager(stream=None, **config): config['loop'] = event_loop if stream: config['stream'] = os.path.join(test_dir, stream) return testing.Manager(**config) return manager def test_connection(manager): assert isinstance(manager().connect(), asyncio.Task) def test_ping(manager): manager = manager(stream='ping.yaml') future = manager.send_action({'Action': 'Ping'}) assert 'ping' in future.result() @pytest.mark.asyncio async def test_login_ok(manager): manager = manager(username='xx', secret='xx', stream='login_ok.yaml') authenticated = await manager.authenticated_future assert authenticated.success is True assert manager.login(manager.authenticated_future) is True @pytest.mark.asyncio async def test_login_failed(manager): manager = manager(username='xx', secret='xx', stream='login_failed.yaml') authenticated = await manager.authenticated_future assert authenticated.success is False assert manager.login(manager.authenticated_future) is False def test_logoff(manager): manager = manager(stream='logoff.yaml') future = manager.send_action({'Action': 'logoff'}) assert future.result().success is True def test_queue_status(manager): manager = manager(stream='queue_status.yaml') future = manager.send_action({'Action': 'QueueStatus', 'Queue': 'xxxxxxxxxxxxxxxx-tous'}) responses = future.result() assert len(responses) == 9 def test_pjsip_show_endpoint(manager): manager = manager(stream='pjsip_show_endpoint.yaml') future = manager.send_action({'Action': 'PJSIPShowEndpoint', 'Endpoint': 'XXXXX'}) responses = future.result() assert len(responses) == 7 def test_command_core_show_version(manager): manager = manager(stream='command_core_show_version.yaml') future = manager.send_command('core show version') responses = future.result() assert len(responses) == 4 # @todo: in responses['content'], # you retrieve only '--END COMMAND--' instead of the result of the command def test_asyncagi_get_variable(manager): manager = manager(stream='asyncagi_get_var.yaml') future = manager.send_agi_command( 'SIP/000000-00000a53', 'GET VARIABLE endpoint') response = future.result()[-1] assert response.result == '200 result=1 (SIP/000000)' pretty_result = response.parsed_result() assert pretty_result['status_code'] == 200 assert pretty_result['result'][0] == '1' assert pretty_result['result'][1] == 'SIP/000000' def test_asyncagi_get_variable_on_dead_channel(manager): manager = manager(stream='asyncagi_channel_does_not_exist.yaml') future = manager.send_agi_command( 'SIP/eeeeee-00000014', 'GET VARIABLE DIALSTATUS') response = future.result() assert response.response == 'Error' assert response.message == 'Channel SIP/eeeeee-00000014 does not exist.' def test_originate_sync(manager): manager = manager(stream='originate_sync.yaml') future = manager.send_action({'Action': 'Originate', 'Async': 'false'}) response = future.result() assert response.success assert response.message == 'Originate successfully queued' def test_close(manager): manager().close() def test_events(manager): future = asyncio.Future() manager = manager() @manager.register_event('Peer*') def callback(manager, event): future.set_result(event) event = message.Message.from_line('Event: PeerStatus') assert event.success is True assert event['Event'] == 'PeerStatus' assert 'Event' in event matches = manager.dispatch(event) assert matches == ['Peer*'] assert event is future.result() event = message.Message.from_line('Event: NoPeerStatus') matches = manager.dispatch(event) assert matches == [] def test_coroutine_events_handler(manager): async def callback(manager, event): # to create quickly a coroutine generator, don't do that on # production code return manager = manager() manager.register_event('Peer*', callback) event = message.Message.from_line('Event: PeerStatus') assert event.success is True assert event['Event'] == 'PeerStatus' assert 'Event' in event matches = manager.dispatch(event) assert matches == ['Peer*'] def test_from_config(event_loop, tmpdir): f = tmpdir.mkdir("config").join("config.ini") f.write(''' [asterisk] host = 127.0.0.1 user= username secret = mysecret ''') manager = testing.Manager.from_config(str(f), loop=event_loop) assert manager.config['secret'] == 'mysecret' with open(str(f)) as fd: manager = testing.Manager.from_config(fd, loop=event_loop) assert manager.config['secret'] == 'mysecret' def test_pinger(manager): manager = manager() assert isinstance(manager.pinger, asyncio.TimerHandle) manager.close() assert manager.pinger is None panoramisk-1.4/tests/test_message.py0000644000175000017500000000076414103000544020137 0ustar gawelgawel00000000000000from panoramisk.message import Message from panoramisk import utils import pytest @pytest.fixture def message(): def _message(data): return Message.from_line(data) EOL = utils.EOL utils.EOL = '\n' yield _message utils.EOL = EOL def test_multivalue(message): m = message(''' Event: X Value: X Value: Y ''') assert m.value == ['X', 'Y'] def test_content(message): m = message('''\ Response: Follows --- blah --- ''') assert m.content == '--- blah ---' panoramisk-1.4/tests/test_protocol.py0000644000175000017500000000124514103000544020347 0ustar gawelgawel00000000000000from panoramisk import testing import asyncio import pytest @pytest.fixture def conn(request, event_loop): def callback(*args): pass loop = asyncio.get_event_loop_policy().new_event_loop() manager = testing.Manager(loop=loop) manager.register_event('Peer*', callback) return manager.protocol def test_received(conn): conn.data_received(b'Event: None\r\n\r\n') conn.data_received(b'Event: PeerStatus\r\nPeer: gawel\r\n\r\n') conn.data_received(b'Response: Follows\r\nPeer: gawel\r\n\r\n') conn.data_received(b'Response: Success\r\nPing: Pong\r\n\r\n') def test_send(conn): assert isinstance(conn.send({}), asyncio.Future) panoramisk-1.4/tests/test_utils.py0000644000175000017500000000175314103000544017652 0ustar gawelgawel00000000000000from panoramisk import utils def test_parse_agi_valid_result(): res = utils.parse_agi_result('200 result=0') assert res == {'msg': '', 'result': ('0', ''), 'status_code': 200} res = utils.parse_agi_result('200 result=1') assert res == {'msg': '', 'result': ('1', ''), 'status_code': 200} res = utils.parse_agi_result('200 result=1234') assert res == {'msg': '', 'result': ('1234', ''), 'status_code': 200} res = utils.parse_agi_result('200 result= (timeout)') assert res == {'msg': '', 'result': ('', ''), 'status_code': 200} def test_parse_agi_invalid_result(): res = utils.parse_agi_result('510 Invalid or unknown command') assert res == {'msg': '', 'result': ('', ''), 'error': 'AGIInvalidCommand', 'status_code': 510} res = utils.parse_agi_result('520 Use this') assert res == {'msg': '520 Use this', 'result': ('', ''), 'error': 'AGIUsageError', 'status_code': 520} panoramisk-1.4/tools/0000755000175000017500000000000014103000545015072 5ustar gawelgawel00000000000000panoramisk-1.4/tools/README.rst0000644000175000017500000000065714103000544016570 0ustar gawelgawel00000000000000 Developer --------- When developping with Panoramisk you might find useful to see precisely the requests/responses going in and out through the AMI interface. You can use Tcpdump, Wireshark which might be advised on a production/loaded system, but for some quick test on your local machine you can use netcat to inspect traffic simple. The shell script `netcat-middleman.sh` help you to log your incoming and outgoing traffic. panoramisk-1.4/tools/netcat-middleman.sh0000755000175000017500000000104514103000544020636 0ustar gawelgawel00000000000000#!/bin/bash host=localhost port=5039 if [ "$1" != "" ]; then host=$1 port=5038 fi; while true do BACKUP_EXT=$(date +%y%m%d%h%m%s) if [[ -f outgoing.log ]]; then cp outgoing.log outgoing.log.$BACKUP_EXT fi if [[ -f incoming.log ]]; then cp incoming.log incoming.log.$BACKUP_EXT fi rm pipe mkfifo pipe echo "Listening on localhost:$port" echo "Capture incoming and outgoing traffic from $host:5038" nc -l -p $port < pipe | tee outgoing.log | nc $host 5038 | tee pipe incoming.log done panoramisk-1.4/tools/travis0000755000175000017500000000024314103000544016326 0ustar gawelgawel00000000000000#!/bin/bash set -e tox -- -sv # run only if we are in a pyXX TOXENV if [ "${TOXENV:0:2}" == "py" ] then coverage combine coverage report --show-missing fi panoramisk-1.4/tox.ini0000644000175000017500000000156714103000544015255 0ustar gawelgawel00000000000000[tox] envlist = py35,py36,py37,py38,flake8,coverage,docs [flake8] max-line-length = 120 [testenv] skip_install=true setenv = COVERAGE_FILE={toxinidir}/.coverage.{envname} commands = pip install -e .[test] coverage run {envbindir}/py.test [] deps = coverage [testenv:flake8] basepython = python3.8 commands = flake8 panoramisk examples deps = flake8 [testenv:coverage] basepython = python3.8 skip_install=false skipsdist=true deps = coverage setenv = COVERAGE_FILE={toxinidir}/.coverage commands = coverage erase coverage combine coverage report --show-missing [testenv:docs] skip_install=false skipsdist=true basepython = python3.8 changedir = docs whitelist_externals = rm deps = sphinx Pygments commands = rm -Rf {envtmpdir}/doctrees {envtmpdir}/html sphinx-build -b html -d {envtmpdir}/doctrees . {envtmpdir}/html