proactive outreach manager and recorder integration …
TRANSCRIPT
Proactive Outreach Manager and Recorder Integration
Release 305 Issue 1
February 2017
AVAYA SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT
REVISED October 12 2015
Using this document signifies your assent to the following SDK License Terms READ THIS CAREFULLY BEFORE ELECTRONICALLY ACCESSING OR USING THIS PROPRIETARY PRODUCT THIS IS A LEGAL AGREEMENT (ldquoAGREEMENTrdquo) BETWEEN YOU INDIVIDUALLY ANDOR THE LEGAL ENTITY FOR WHOM YOU ARE OPENING INSTALLING DOWNLOADING COPYING OR OTHERWISE USING THE SDK (COLLECTIVELY AS REFERENCED HEREIN ldquoYOUrdquo ldquoYOURrdquo OR ldquoLICENSEErdquo) AND AVAYA INC OR ANY AVAYA AFFILIATE (COLLECTIVELY ldquoAVAYArdquo) IF YOU ARE ACCEPTING THE TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF A LEGAL ENTITY YOU REPRESENT AND WARRANT THAT YOU HAVE FULL LEGAL AUTHORITY TO ACCEPT ON BEHALF OF AND BIND SUCH LEGAL ENTITY TO THIS AGREEMENT BY OPENING THE MEDIA CONTAINER BY INSTALLING DOWNLOADING COPYING OR OTHERWISE USING THE AVAYA SOFTWARE DEVELOPMENT KIT (ldquoSDKrdquo) OR AUTHORIZING OTHERS TO DO SO YOU SIGNIFY THAT YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT IF YOU DO NOT HAVE SUCH AUTHORITY OR DO NOT WISH TO BE BOUND BY THE TERMS OF THIS AGREEMENT SELECT THE DECLINE BUTTON AT THE END OF THE TERMS OF THIS AGREEMENT OR THE EQUIVALENT OPTION 10 DEFINITIONS 11 ldquoAffiliatesrdquo means any entity that is directly or indirectly controlling controlled by or under common control with Avaya Inc For purposes of this definition ldquocontrolrdquo means the power to direct the management and policies of such party directly or indirectly whether through ownership of voting securities by contract or otherwise and the terms ldquocontrollingrdquo and ldquocontrolledrdquo have meanings correlative to the foregoing 12 ldquoAvaya Software Development Kitrdquo or ldquoSDKrdquo means Avaya technology which may include object code Client Libraries Specification Documents Software libraries application programming interfaces (ldquoAPIrdquo) Software tools Sample Application Code published specifications and Documentation 13 ldquoClient Librariesrdquo mean any enabler code specifically designated as such and included in a SDK Client Libraries may also be referred to as ldquoDLLsrdquo and represent elements of the SDK required at runtime to communicate with Avaya products or other SDK elements 14 ldquoChange In Controlrdquo shall be deemed to have occurred if any person entity or group comes to own or control directly or indirectly beneficially or of record voting securities (or any other form of controlling interest) which represent more than fifty percent (50) of the total voting power of or to Licensee 15 ldquoDerivative Work(s)rdquo means (a) for copyrightable or copyrighted material any translation (including translation into other computer languages) port compiling of Source Code into object code combination with a pre-existing work modification correction addition extension upgrade improvement compilation abridgment or other form in which an existing work may be recast transformed or adapted or which would otherwise constitute a derivative work under the United States Copyright Act (b) for patentable or patented material any changes additions modifications or improvements thereon and (c) for material which is protected by trade secret any new material derived from such existing trade secret material including new material which may be protected by copyright patent andor trade secret Permitted Modifications will be considered Derivative Works 16 ldquoDocumentationrdquo includes but is not limited to programmer guides CDs manuals materials and information appropriate or necessary for use in connection with the SDK Documentation may be provided in machine-readable electronic or hard copy form 17 ldquoIntellectual Propertyrdquo means any and all tangible and intangible (i) rights associated with works of authorship throughout the world including but not limited to copyrights neighboring rights moral rights and mask works (ii) trademark
and trade name rights and similar rights (iii) trade secret rights (iv) patents algorithms designs and other industrial property rights (v) all other intellectual and industrial property rights (of every kind and nature throughout the world and however designated) whether arising by operation of law contract license or otherwise and (vi) all registrations initial applications renewals extensions continuations divisions or reissues thereof now or hereafter in force (including any rights in any of the foregoing) 18 ldquoOpen Source Software or OSS is as defined by the Open Source Initiative (ldquoOSIrdquo) and is software licensed under an OSI approved license as set forth at httpwwwopensourceorgdocsosd (or such successor site as designated by OSI) 19 ldquoPermitted Modification(s)rdquo means Licenseersquos modifications of the Source Code as needed to create applications interfaces workflows or processes for use with Avaya products 110 ldquoSpecification Documentrdquo means any notes or similar instructions in hard copy or machine readable form including any technical interface andor interoperability specifications that define the requirements and conditions for connection to andor interoperability with Avaya products systems and solutions 111 ldquoSource Coderdquo means the high-level statement version of the Sample Application Code or Software written in the source language used by programmers and includes one or more programs Source Code programs may include one or more files but is not limited to user interface markup language (mxml) action script (as) precompiled Flash code (swc) java script (js) hypertext markup language (html) active server pages (asp) C or C Net source code (cs) java source code (java) java server pages (jsp) java archives (jar) graphic interchange format (gif) cascading style sheet (css) and extensible markup language (xml) files Source Code files may also be provided in binary object format may require explicit compilation into binary object format for execution or may be interpreted natively using a separate application execution program or platform 112 ldquoSample Application Coderdquo means Source Code andor executable Software provided for the purposes of demonstrating functionality of an Avaya product through the Avaya Software Development Kit 113 ldquoSoftwarerdquo means Avayarsquos intangible information constituting one or more computer or apparatus programs including but not limited to Avaya software in Source Code or in machine-readable compiled object code form 20 LICENSE GRANT 21 SDK License
A Provided Licensee pays to Avaya the applicable license fee (if any) Avaya hereby grants Licensee a limited non-exclusive non-transferable license (without the right to sublicense except as set forth in 21B(iii)) to use the SDK (including Sample Application Code) solely for the purpose of Licensees internal development efforts to develop applications interfaces value-added services andor solutions workflows or processes to work in conjunction with Avaya products provided however that Licensee shall have no right to distribute license (whether or not through multiple tiers) or otherwise transfer the SDK to any third party or incorporate the SDK in any software product or technology Avaya further grants Licensee the right if the Licensee so chooses to package Client Libraries for redistribution with Licenseersquos complementary applications that have been developed using this SDK subject to the terms and conditions set forth herein Where SDK includes Specification Document(s) Licensee is granted a license to use such Specification Documents solely to enable Licenseersquos products services and application solutions to exchange messages and signals with Avaya products systems and solutions to which the Specification Document(s) apply Avayarsquos support obligations for the SDK Sample Application Code and any Derivative Works are set forth in Section 4 of this Agreement B The foregoing license to use Sample Application Code is contingent upon the following (i) Licensee may use and modify the Sample Application Code Specification Documents and Documentation solely for internal development of applications interfaces
workflows or processes for use with Avaya products integration of such applications interfaces workflows and processes with Avaya products and interoperability testing of the foregoing with Avaya products (ii) Licensee must ensure that the modifications made to the Sample Application Code as permitted in clause (i) of this Section 21B are compatible andor interoperable with Avaya products andor integrated therewith (iii) Licensee may compile or otherwise prepare for distribution the Sample Application Code with Permitted Modifications into an object code or other suitable program format for distribution provided that such sublicense is subject to an end user license agreement that is consistent with the terms of this Agreement and if applicable the Avaya DevConnect Program Agreement and is equally as protective as Licenseersquos standard software license terms but in no event shall the standard of care be less than a reasonable degree of care Under no circumstances shall Licensee enable the use or activation of any of Avayarsquos Intellectual Property by an end user without such end user having acquired the additional necessary licenses to Avaya Intellectual Property Avayarsquos support obligations for the SDK Sample Application Code and any Derivative Works are set forth in Section 4 of this Agreement C Except as expressly authorized by this Agreement and unless otherwise permitted by the applicable law Licensee shall not (i) translate publish or display the SDK Specification Documents or Documentation or any copy or part thereof or (ii) use modify or distribute the redistributable Client Libraries in any manner that causes any portion of the redistributable Client Libraries that is not already subject to an OSS license to become subject to the terms of any OSS license D Licensee agrees that it is licensed to use the SDK only in connection with Avaya products (and if applicable in connection with services provided under the Avaya DevConnect Program Agreement) In the event of any conflict between the terms and conditions of this Agreement and the Avaya DevConnect Program Agreement (if applicable) the terms and conditions of the Avaya DevConnect Program Agreement shall prevail E With respect to Software that contains elements provided by third party suppliers Licensee may install and use the Software in accordance with the terms and conditions of the applicable license agreements such as ldquoshrinkwraprdquo or ldquoclick-throughrdquo licenses accompanying or applicable to the Software F Avaya shall have the right at its cost and expense to inspect andor audit (i) by remote polling or other reasonable electronic means at any time and (ii) in person during normal business hours and with reasonable notice Licenseersquos books records and accounts to determine Licenseersquos compliance with this Agreement In the event such inspection or audit uncovers non-compliance with this Agreement then without prejudice to Avayarsquos termination rights hereunder Licensee shall promptly pay Avaya any applicable license fees Licensee agrees to keep a current record of the location of the SDK
22 No Standalone Product Nothing in this Agreement authorizes
or grants Licensee any rights to distribute or otherwise make available
to a third party the SDK in whole or in part or any Derivative Work
in source or object code format on a standalone basis other than the
modifications permitted in Section 21B of this Agreement 23 Proprietary Notices Licensee shall not remove any copyright trade mark or other proprietary notices incorporated in the copies of the SDK Sample Application Code and redistributable files in Licenseersquos possession or control or any modifications thereto Redistributions in binary form or other suitable program format for distribution to the extent expressly permitted must also reproduce Avayarsquos copyright trademarks or other proprietary notices as incorporated in the SDK in any associated Documentation or ldquosplash screensrdquo that display Licensee copyright notices 24 Third-Party Components You acknowledge certain software programs or portions thereof included in the SDK may contain software distributed under third party agreements (ldquoThird Party Componentsrdquo) which may contain terms that
expand or limit rights to use certain portions of the SDK (ldquoThird Party Termsrdquo) Information identifying the copyright holders of the Third Party Components and the Third Party Terms that apply is available in the attached Schedule 1 (if any) SDK Documentation or on Avayarsquos web site at httpsupportavayacomCopyright (or such successor site as designated by Avaya) The open source software license terms provided as Third Party Terms are consistent with the license rights granted in this Agreement and may contain additional rights benefiting You such as modification and distribution of the open source software The Third Party Terms shall take precedence over this Agreement solely with respect to the applicable Third Party Components to the extent that this Agreement imposes greater restrictions on You than the applicable Third Party Terms Licensee is solely responsible for procuring any necessary licenses for Third Party Components including payment of licensing royalties or other amounts to third parties for the use thereof 25 Copies of SDK Licensee may copy the SDK only as necessary to exercise its rights hereunder provided however that Licensee may also make one (1) copy for back-up purposes and any reproduction of the SDK (including derivatives thereof) either in whole or in part shall include the Avaya copyright notice that was provided in the SDK 26 No Reverse Engineering Licensee shall have no rights to any Source Code for any of the software in the SDK except for the explicit rights to use the Source Code as provided to Licensee hereunder Licensee agrees that it shall not cause or permit the disassembly decompilation or reverse engineering of the Software Notwithstanding the foregoing if the SDK is rightfully located in a member state of the European Union and Licensee needs information about the Software in the SDK in order to achieve interoperability of an independently created software program with the Software in the SDK Licensee will first request such information from Avaya Avaya may charge Licensee a reasonable fee for the provision of such information If Avaya refuses to make such information available then Licensee may take steps such as reverse assembly or reverse compilation to the extent necessary solely in order to achieve interoperability of the Software in the SDK with an independently created software program To the extent that the Licensee is expressly permitted by applicable mandatory law to undertake any of the activities listed in this section Licensee will not exercise those rights until Licensee has given Avaya twenty (20) days written notice of its intent to exercise any such rights 27 Responsibility for Development Tools Licensee acknowledges that effective utilization of the SDK may require the use of a development tool compiler and other software and technology of third parties which may be incorporated in the SDK pursuant to Section 24 Licensee is solely responsible for procuring such third party software and technology and the necessary licenses including payment of licensing royalties or other amounts to third parties for the use thereof 28 US Government End Users The SDK shall be classified as commercial computer software and the Documentation is classified as commercial computer software documentation or commercial items pursuant to FAR 12212 or DFAR 2277202 as applicable Any use modification reproduction release performance display or disclosure of the SDK or Documentation by the Government of the United States shall be governed solely by the terms of the Agreement and shall be prohibited except to the extent expressly permitted by the terms of the Agreement 29 Limitation of Rights No right is granted to Licensee to sublicense its rights hereunder All rights not expressly granted are reserved by Avaya and except as expressly set forth herein no license is granted by Avaya under this Agreement directly by implication estoppel or otherwise under any patent copyright trade secret or trademark or other Intellectual Property right of Avaya Nothing herein shall be deemed to authorize Licensee to use Avayas trademarks or trade names in Licensees advertising marketing promotional sales or related materials 210 Nonassertion by Licensee Licensee agrees not to assert any patent rights related to the SDK or applications developed using the SDK against Avaya Avayas distributors Avaya customers or other licensees of the SDK for making using selling offering for sale or importing any products or technology developed using the SDK
211 Avaya Independent Development Licensee understands and agrees that Avaya or its Affiliates may acquire license develop for itself or have others develop for it and market andor distribute similar software to that which Licensee may develop In absence of a separate written agreement to the contrary Avaya or its Affiliates will be free to use any information Licensee provides including problem reports or enhancement requests to Avaya for any purpose subject to any applicable patents or copyrights 212 Feedback and Support Licensee agrees to provide any comments and suggestions regarding the performance of the SDK (a) if applicable on the developer forum of the DevConnect Program on wwwavayacomdevconnect or (b) via the process otherwise indicated by Avaya with respect to the SDK Avaya agrees to monitor the applicable forum but is under no obligation to implement any of the suggestions andor proposals or be required to respond to any questions asked in the forum Self-support tools are available via the Avaya DevConnect programrsquos portal and requires self registration Licensee hereby assigns to Avaya all right title and interest in and to Feedback provided to Avaya 213 Fees and Taxes To the extent that fees are associated with the license of the SDK Licensee agrees to pay to Avaya or pay directly to the applicable government or taxing authority if requested by Avaya all taxes and charges including without limitation penalties and interest which may be imposed by any federal state or local governmental or taxing authority arising hereunder excluding however all taxes computed upon Avayarsquos net income If You move any Software including the SDK and as a result of such move a jurisdiction imposes a duty tax levy or fee (including withholding taxes fees customs or other duties for the import and export of any such Software) then You are solely liable for and agree to pay any such duty taxes levy or other fees 214 No Endorsement Neither the name Avaya its Affiliates nor the names of contributors may be used to endorse or promote products derived from the Avaya SDK without specific prior written permission from Avaya 215 High Risk Activities The Avaya SDK is not fault-tolerant and is not designed manufactured or intended for use or resale as on-line control equipment or in hazardous environments requiring failsafe performance such as in the operation of nuclear facilities aircraft navigation or aircraft communications systems mass transit air traffic control medical or direct life support machines dedicated emergency call handling systems or weapons systems in which the failure of the Avaya SDK could lead directly to death personal injury or severe physical or environmental damage (high risk activities) If Licensee uses the Avaya SDK for high risk activities Licensee does so at Licenseersquos own risk and Licensee assumes all responsibility and liability for such use to the maximum extent such limitation or exclusion is permitted by applicable law Licensee agrees that Avaya and its suppliers will not be liable for any claims or damages arising from or related to use of the Avaya SDK for high risk activities to the maximum extent such limitation or exclusion is permitted by law 216 No Virus Licensee warrants that (i) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will not contain any computer program file that includes time code limitations disabling devices or any other mechanism which will prevent the Supplier Software from being functional at all times (collectively ldquoTime Bombsrdquo) and (ii) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will be free of computer viruses black boxes malware trapdoors and other mechanisms to allow remotehidden attacks or access through unauthorized computerized command and control and will not contain any other computer software routines designed to spy monitor traffic (network sniffers keyloggers) damage or erase such applications interfaces value-added services andor solutions workflows or processes developed using this SDK or data or any computer files or systems of Avaya its Affiliates andor end users (collectively ldquoVirusrdquo) In addition to any other remedies permitted in the Agreement if Licensee breaches its warranties under this Section Licensee will at its expense take remedial action to eliminate any Time Bombs andor Viruses and prevent re-occurrence (including implementing appropriate processes to prevent further occurrences) as well
as provide prompt reasonable assistance to Avaya to materially reduce the effects of the Time Bomb andor Virus 217 Disclaimer Any software security feature is not a guaranty against malicious code deleterious routines and other techniques and tools employed by computer ldquohackersrdquo and other third parties to create security exposures Compromised passwords represent a major security risk Avaya encourages You to create strong passwords using three different character types change Your password regularly and refrain from using the same password regularly You must treat such information as confidential You agree to notify Avaya immediately upon becoming aware of any unauthorized use or breach of Your user name password account or subscription You are responsible for ensuring that Your networks and systems are adequately secured against unauthorized intrusion or attack and regularly back up of Your data and files in accordance with good computing practices 3 OWNERSHIP 31 As between Avaya and Licensee Avaya or its licensors shall own and retain all proprietary rights including all patent copyright trade secret trademark and other Intellectual Property rights in and to the SDK and any corrections bug fixes enhancements updates improvements or modifications thereto and Licensee hereby irrevocably transfers conveys and assigns to Avaya all of its right title and interest therein Avaya shall have the exclusive right to apply for or register any patents mask work rights copyrights and such other proprietary protections with respect thereto Licensee acknowledges that the license granted under this Agreement does not provide Licensee with title or ownership to the SDK but only a right of limited use under the terms and conditions of this Agreement 32 Grant Back License to Avaya Licensee hereby grants to Avaya an irrevocable perpetual non-exclusive sub-licensable royalty-free worldwide license under any and all of Licensees Intellectual Property rights related to any Permitted Modifications to use employ practice make have made sell andor otherwise exploit any and all Permitted Modifications 40 SUPPORT Avaya will not provide any support for the SDK provided under this Agreement or for any Derivative Works including without limitation modifications to the Source Code or applications built by Licensee using the SDK Notwithstanding the above limitations Avaya shall have no obligation to provide support for the use of the SDK or Licensees derivative application services or solutions which may or may not include redistributable Client Libraries or Sample Application Code to any third party to whom Licensee delivers such derivative applications services or solutions Avaya further will not provide fixes patches or repairs for any defects that might exist in the SDK or the Sample Application Code provided under this Agreement In the event that Licensee desires support services for the SDK and provided that Avaya offers such support services (in its sole discretion) Licensee will be required to enter into a Avaya DevConnect Program Agreement or any support agreement with Avaya Nothing herein shall be construed to require Avaya to provide support services or updates upgrades bug fixes or modifications to the SDK 50 CONFIDENTIALITY 51 Protection of Confidential Information Licensee shall take all reasonable measures to maintain the confidentiality of the SDK Specification Documents and other Avaya technical information obtained by it (collectively the ldquoConfidential Informationrdquo) and will not disclose the Confidential Information to any third party Licensee agrees at all times to protect and preserve the SDK in strict confidence and perpetually and shall not use such Confidential Information other than as expressly authorized by Avaya under this Agreement nor shall Licensee disclose any such Confidential Information to third parties without Avayas written consent Licensee further agrees to immediately return to Avaya all Confidential Information (including copies thereof) in Licensees possession custody or control upon termination of this Agreement at any time and for any reason The obligations of confidentiality shall not apply to information which (a) has entered the public domain except where such entry is the result of Licensees breach of this Agreement (b) prior to disclosure hereunder was already rightfully in Licensees possession (c) subsequent to disclosure hereunder is obtained by Licensee on a non-confidential basis from a third party who has the right to disclose such information
to the Licensee (d) is required to be disclosed pursuant to a court order so long as Avaya is given adequate notice and the ability to challenge such required disclosure 52 Press Releases Any press release or publication regarding this Agreement is subject to prior review and written approval of Avaya 60 NO WARRANTY The SDK and Documentation are provided ldquoAS-ISrdquo without any warranty whatsoever AVAYA SPECIFICALLY AND EXPRESSLY DISCLAIMS ANY WARRANTIES OR CONDITIONS STATUTORY OR OTHERWISE INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NONINFRINGEMENT AND SATISFACTORY QUALITY AVAYA DOES NOT WARRANT THAT THE SDK AND DOCUMENTATION ARE SUITABLE FOR LICENSEES USE THAT THE SDK OR DOCUMENTATION ARE WITHOUT DEFECT OR ERROR THAT OPERATION WILL BE UNINTERRUPTED OR THAT DEFECTS WILL BE CORRECTED FURTHER AVAYA MAKES NO WARRANTY REGARDING THE RESULTS OF THE USE OF THE SDK AND DOCUMENTATION NEITHER AVAYA NOR ITS SUPPLIERS MAKE ANY WARRANTY EXPRESS OR IMPLIED THAT SECURITY THREATS AND VULNERABILITIES WILL BE DETECTED OR SOFTWARE WILL RENDER AN END USERrsquoS OR LICENSEErsquoS NETWORK OR PARTICULAR NETWORK ELEMENTS SAFE FROM INTRUSIONS AND OTHER SECURITY BREACHES 70 CONSEQUENTIAL DAMAGES WAIVER EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT AVAYA SHALL NOT BE LIABLE FOR ANY INCIDENTAL INDIRECT SPECIAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT OR USE OF THE SDK OR FOR THE LOSS OR CORRUPTION OF DATA INFORMATION OF ANY KIND BUSINESS PROFITS OR OTHER COMMERCIAL LOSS HOWEVER CAUSED AND WHETHER OR NOT AVAYA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 80 LIMITATION OF LIABILITY EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT IN NO EVENT SHALL AVAYAS TOTAL LIABILITY TO LICENSEE IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT EXCEED FIVE HUNDRED DOLLARS ($500) THE PARTIES AGREE THAT THE LIMITATIONS SPECIFIED IN THIS SECTION WILL APPLY EVEN IF ANY LIMITED REMEDY PROVIDED IN THIS AGREEMENT IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE 90 INDEMNIFICATION Licensee shall indemnify and hold harmless Avaya its Affiliates and their respective officers directors agents suppliers customers and employees from and against all claims damages losses liabilities costs expenses and fees (including fees of attorneys and other professionals) arising from or relating to Licenseersquos use of the SDK with other software such as operating systems and codecs and the direct or indirect distribution or sale of software Derivative Works or other products (including but not limited to applications interfaces and application programming interfaces) developed utilizing the SDK including but not limited to products liability claims and claims of infringement of third party Intellectual Property rights 100 TERM AND TERMINATION 101 This Agreement will continue through December 31
st of the
current calendar year The Agreement will automatically renew for one (1) year terms and run concurrently with Licenseersquos membership in the Avaya DevConnect Program if applicable unless terminated as specified in Section 102 or 103 below and if applicable provided Licensee is a member of the Avaya DevConnect Program in a good-standing as determined by Avaya at its sole discretion 102 Either party shall have the right to terminate the Agreement upon thirty (30) days written notice to the other party 103 Notwithstanding language to the contrary Avaya may terminate this Agreement immediately upon written notice to Licensee for breach of Section 2 (License Grant) Section 5 (Confidentiality) or Section 12 (Compliance with Laws) Avaya may also terminate this license by giving written notice if a
Change In Control should occur or if Licensee becomes insolvent or voluntary or involuntary proceedings by or against Licensee are instituted in bankruptcy or under any insolvency law or a receiver or custodian is appointed for Licensee or proceedings are instituted by or against Licensee for corporate reorganization or the dissolution of Licensee which proceedings if involuntary have not been dismissed within thirty (30) days after the date of filing or Licensee makes an assignment for the benefit of its creditors or substantially all of the assets of Licensee are seized or attached and not released within sixty (60) days thereafter or if Licensee has ceased or threatened to cease to do business in the regular course 104 Upon termination of this Agreement Licensee will immediately cease using the SDK Development Kit and Licensee agrees to destroy all adaptations or copies of the SDK and Documentation or return them to Avaya upon termination of this License 105 The rights and obligations of the parties contained in Sections 23 26 27 210 211 3 and 5 through 18 shall survive any expiration or termination of this Agreement 110 ASSIGNMENT Avaya may assign all or any part of its rights and obligations hereunder Licensee may not assign this Agreement or any interest or rights granted hereunder to any third party without the prior written consent of Avaya The term assign includes but is not limited to any transaction in which there is a Change In Control or reorganization of Licensee pursuant to a merger sale of assets or stock This Agreement shall terminate immediately upon occurrence of any prohibited assignment 120 COMPLIANCE WITH LAWS Licensee shall comply with all applicable laws and regulations including without limitation those applicable to data privacy intellectual property trade secret fraud music performance rights and the export or re-export of technology and will not export or re-export the SDK or any other technical information provided under this Agreement in any form in violation of the export control laws of the United States of America and of any other applicable country For more information on such export laws and regulations Licensee may refer to the resources provided in the websites maintained by the US Commerce Department the US State Department and the US Office of Foreign Assets Control 130 WAIVER The failure to assert any rights under this Agreement including but not limited to the right to terminate in the event of breach or default will not be deemed to constitute a waiver of the right to enforce each and every provision of this Agreement in accordance with their terms 140 SEVERABILITY If any provision of this Agreement is determined to be unenforceable or invalid this Agreement will not be rendered unenforceable or invalid as a whole and the provision will be changed and interpreted so as to best accomplish the objectives of the original provision within the limits of applicable law 150 GOVERNING LAW AND DISPUTE RESOLUTION This Agreement and any dispute claim or controversy arising out of or relating to this Agreement (Dispute) including without limitation those relating to the formation interpretation breach or termination of this Agreement or any issue regarding whether a Dispute is subject to arbitration under this Agreement will be governed by New York State laws excluding conflict of law principles and the United Nations Convention on Contracts for the International Sale of Goods Any Dispute shall be resolved in accordance with the following provisions The disputing party shall give the other party written notice of the Dispute The parties will attempt in good faith to resolve each Dispute within thirty (30) days or such other longer period as the parties may mutually agree following the delivery of such notice by negotiations between designated representatives of the parties who have dispute resolution authority If a Dispute that arose anywhere other than in the United States or is based upon an alleged breach committed anywhere other than in the United States cannot be settled under these procedures and within these timeframes it will be conclusively determined upon request of either party by a final and binding arbitration proceeding to be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a single arbitrator appointed by the parties or (failing agreement) by an arbitrator appointed by the President
of the International Chamber of Commerce (from time to time) except that if the aggregate claims cross claims and counterclaims by any one party against any or all other parties exceed One Million US Dollars at the time all claims including cross claims and counterclaims are filed the proceeding will be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a panel of three arbitrator(s) appointed in accordance with the Rules of Arbitration of the International Chamber of Commerce The arbitration will be conducted in the English language at a location agreed by the parties or (failing agreement) ordered by the arbitrator(s) The arbitrator(s) will have authority only to award compensatory damages within the scope of the limitations of this Agreement and will not award punitive or exemplary damages The arbitrator(s) will not have the authority to limit expand or otherwise modify the terms of this Agreement The ruling by the arbitrator(s) will be final and binding on the parties and may be entered in any court having jurisdiction over the parties or any of their assets The parties will evenly split the cost of the arbitrator(s) fees but each party will bear its own attorneys fees and other costs associated with the arbitration The parties their representatives other participants and the arbitrator(s) will hold the existence content and results of the arbitration in strict confidence to the fullest extent permitted by law Any disclosure of the existence content and results of the arbitration shall be as limited and narrowed as required to comply with the applicable law By way of illustration if the applicable law mandates the disclosure of the monetary amount of an arbitration award only the underlying opinion or rationale for that award may not be disclosed If a Dispute by one party against the other that arose in the United States or is based upon an alleged breach committed in the United States cannot be settled under the procedures and within the timeframe set forth above then either party may bring an action or proceeding solely in either the Supreme Court of the State of New York New York County or the United States District Court for the Southern District of New York Except as otherwise stated above with regard to arbitration of Disputes that arise anywhere other than in the United States or are based upon an alleged breach committed anywhere other than in the United States each party to this Agreement consents to the exclusive jurisdiction of those courts including their appellate courts for the purpose of all actions and proceedings The parties agree that the arbitration provision in this section may be enforced by injunction or other equitable order and no bond or security of any kind will be required with respect to any such injunction or order Nothing in this section will be construed to preclude either party from seeking provisional remedies including but not limited to temporary restraining orders and preliminary injunctions from any court of competent jurisdiction in order to protect its rights including its rights pending arbitration at any time In addition and notwithstanding the foregoing Avaya shall be entitled to take any necessary legal action at any time including without limitation seeking immediate injunctive relief from a court of competent jurisdiction in order to protect Avayas intellectual property and its confidential or proprietary information (including but not limited to trade secrets) 160 IMPORTEXPORT CONTROL Licensee is advised that the SDK is of US origin and subject to the US Export Administration Regulations (ldquoEARrdquo) The SDK also may be subject to applicable local country importexport laws and regulations Diversion contrary to US andor applicable local country law andor regulation is prohibited Licensee agrees not to directly or indirectly export re-export import download or transmit the SDK to any country end user or for any use that is contrary to applicable US andor local country regulation or statute (including but not limited to those countries embargoed by the US government) Licensee represents that any governmental agency has not issued sanctions against Licensee or otherwise suspended revoked or denied Licensees importexport privileges Licensee agrees not to use or transfer the SDK for any use relating to nuclear chemical or biological weapons or missile technology unless authorized by the US andor any applicable local government by regulation or specific written license Additionally Licensee is advised that the SDK may contain encryption algorithm or source code that may not be exported to government or military
end users without a license issued by the US Bureau of Industry and Security and any other countryrsquos governmental agencies where applicable 170 AGREEMENT IN ENGLISH The parties confirm that it is their wish that the Agreement as well as all other documents relating hereto including all notices have been and shall be drawn up in the English language only Les parties aux preacutesentes confirment leur volonteacute que cette convention de mecircme que tous les documents y compris tout avis qui sy rattachent soient reacutedigeacutes en langue anglaise 180 ENTIRE AGREEMENT This Agreement its exhibits and other agreements or documents referenced herein constitute the full and complete understanding and agreement between the parties and supersede all contemporaneous and prior understandings agreements (excluding the Avaya DevConnect Program Agreement) and representations relating to the subject matter hereof No modifications alterations or amendments shall be effective unless in writing signed by both parties to this Agreement 19 REDISTRIBUTABLE CLIENT FILES The list of SDK client files that can be redistributed if any are in the SDK in a file called Redistributabletxt
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
AVAYA SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT
REVISED October 12 2015
Using this document signifies your assent to the following SDK License Terms READ THIS CAREFULLY BEFORE ELECTRONICALLY ACCESSING OR USING THIS PROPRIETARY PRODUCT THIS IS A LEGAL AGREEMENT (ldquoAGREEMENTrdquo) BETWEEN YOU INDIVIDUALLY ANDOR THE LEGAL ENTITY FOR WHOM YOU ARE OPENING INSTALLING DOWNLOADING COPYING OR OTHERWISE USING THE SDK (COLLECTIVELY AS REFERENCED HEREIN ldquoYOUrdquo ldquoYOURrdquo OR ldquoLICENSEErdquo) AND AVAYA INC OR ANY AVAYA AFFILIATE (COLLECTIVELY ldquoAVAYArdquo) IF YOU ARE ACCEPTING THE TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF A LEGAL ENTITY YOU REPRESENT AND WARRANT THAT YOU HAVE FULL LEGAL AUTHORITY TO ACCEPT ON BEHALF OF AND BIND SUCH LEGAL ENTITY TO THIS AGREEMENT BY OPENING THE MEDIA CONTAINER BY INSTALLING DOWNLOADING COPYING OR OTHERWISE USING THE AVAYA SOFTWARE DEVELOPMENT KIT (ldquoSDKrdquo) OR AUTHORIZING OTHERS TO DO SO YOU SIGNIFY THAT YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT IF YOU DO NOT HAVE SUCH AUTHORITY OR DO NOT WISH TO BE BOUND BY THE TERMS OF THIS AGREEMENT SELECT THE DECLINE BUTTON AT THE END OF THE TERMS OF THIS AGREEMENT OR THE EQUIVALENT OPTION 10 DEFINITIONS 11 ldquoAffiliatesrdquo means any entity that is directly or indirectly controlling controlled by or under common control with Avaya Inc For purposes of this definition ldquocontrolrdquo means the power to direct the management and policies of such party directly or indirectly whether through ownership of voting securities by contract or otherwise and the terms ldquocontrollingrdquo and ldquocontrolledrdquo have meanings correlative to the foregoing 12 ldquoAvaya Software Development Kitrdquo or ldquoSDKrdquo means Avaya technology which may include object code Client Libraries Specification Documents Software libraries application programming interfaces (ldquoAPIrdquo) Software tools Sample Application Code published specifications and Documentation 13 ldquoClient Librariesrdquo mean any enabler code specifically designated as such and included in a SDK Client Libraries may also be referred to as ldquoDLLsrdquo and represent elements of the SDK required at runtime to communicate with Avaya products or other SDK elements 14 ldquoChange In Controlrdquo shall be deemed to have occurred if any person entity or group comes to own or control directly or indirectly beneficially or of record voting securities (or any other form of controlling interest) which represent more than fifty percent (50) of the total voting power of or to Licensee 15 ldquoDerivative Work(s)rdquo means (a) for copyrightable or copyrighted material any translation (including translation into other computer languages) port compiling of Source Code into object code combination with a pre-existing work modification correction addition extension upgrade improvement compilation abridgment or other form in which an existing work may be recast transformed or adapted or which would otherwise constitute a derivative work under the United States Copyright Act (b) for patentable or patented material any changes additions modifications or improvements thereon and (c) for material which is protected by trade secret any new material derived from such existing trade secret material including new material which may be protected by copyright patent andor trade secret Permitted Modifications will be considered Derivative Works 16 ldquoDocumentationrdquo includes but is not limited to programmer guides CDs manuals materials and information appropriate or necessary for use in connection with the SDK Documentation may be provided in machine-readable electronic or hard copy form 17 ldquoIntellectual Propertyrdquo means any and all tangible and intangible (i) rights associated with works of authorship throughout the world including but not limited to copyrights neighboring rights moral rights and mask works (ii) trademark
and trade name rights and similar rights (iii) trade secret rights (iv) patents algorithms designs and other industrial property rights (v) all other intellectual and industrial property rights (of every kind and nature throughout the world and however designated) whether arising by operation of law contract license or otherwise and (vi) all registrations initial applications renewals extensions continuations divisions or reissues thereof now or hereafter in force (including any rights in any of the foregoing) 18 ldquoOpen Source Software or OSS is as defined by the Open Source Initiative (ldquoOSIrdquo) and is software licensed under an OSI approved license as set forth at httpwwwopensourceorgdocsosd (or such successor site as designated by OSI) 19 ldquoPermitted Modification(s)rdquo means Licenseersquos modifications of the Source Code as needed to create applications interfaces workflows or processes for use with Avaya products 110 ldquoSpecification Documentrdquo means any notes or similar instructions in hard copy or machine readable form including any technical interface andor interoperability specifications that define the requirements and conditions for connection to andor interoperability with Avaya products systems and solutions 111 ldquoSource Coderdquo means the high-level statement version of the Sample Application Code or Software written in the source language used by programmers and includes one or more programs Source Code programs may include one or more files but is not limited to user interface markup language (mxml) action script (as) precompiled Flash code (swc) java script (js) hypertext markup language (html) active server pages (asp) C or C Net source code (cs) java source code (java) java server pages (jsp) java archives (jar) graphic interchange format (gif) cascading style sheet (css) and extensible markup language (xml) files Source Code files may also be provided in binary object format may require explicit compilation into binary object format for execution or may be interpreted natively using a separate application execution program or platform 112 ldquoSample Application Coderdquo means Source Code andor executable Software provided for the purposes of demonstrating functionality of an Avaya product through the Avaya Software Development Kit 113 ldquoSoftwarerdquo means Avayarsquos intangible information constituting one or more computer or apparatus programs including but not limited to Avaya software in Source Code or in machine-readable compiled object code form 20 LICENSE GRANT 21 SDK License
A Provided Licensee pays to Avaya the applicable license fee (if any) Avaya hereby grants Licensee a limited non-exclusive non-transferable license (without the right to sublicense except as set forth in 21B(iii)) to use the SDK (including Sample Application Code) solely for the purpose of Licensees internal development efforts to develop applications interfaces value-added services andor solutions workflows or processes to work in conjunction with Avaya products provided however that Licensee shall have no right to distribute license (whether or not through multiple tiers) or otherwise transfer the SDK to any third party or incorporate the SDK in any software product or technology Avaya further grants Licensee the right if the Licensee so chooses to package Client Libraries for redistribution with Licenseersquos complementary applications that have been developed using this SDK subject to the terms and conditions set forth herein Where SDK includes Specification Document(s) Licensee is granted a license to use such Specification Documents solely to enable Licenseersquos products services and application solutions to exchange messages and signals with Avaya products systems and solutions to which the Specification Document(s) apply Avayarsquos support obligations for the SDK Sample Application Code and any Derivative Works are set forth in Section 4 of this Agreement B The foregoing license to use Sample Application Code is contingent upon the following (i) Licensee may use and modify the Sample Application Code Specification Documents and Documentation solely for internal development of applications interfaces
workflows or processes for use with Avaya products integration of such applications interfaces workflows and processes with Avaya products and interoperability testing of the foregoing with Avaya products (ii) Licensee must ensure that the modifications made to the Sample Application Code as permitted in clause (i) of this Section 21B are compatible andor interoperable with Avaya products andor integrated therewith (iii) Licensee may compile or otherwise prepare for distribution the Sample Application Code with Permitted Modifications into an object code or other suitable program format for distribution provided that such sublicense is subject to an end user license agreement that is consistent with the terms of this Agreement and if applicable the Avaya DevConnect Program Agreement and is equally as protective as Licenseersquos standard software license terms but in no event shall the standard of care be less than a reasonable degree of care Under no circumstances shall Licensee enable the use or activation of any of Avayarsquos Intellectual Property by an end user without such end user having acquired the additional necessary licenses to Avaya Intellectual Property Avayarsquos support obligations for the SDK Sample Application Code and any Derivative Works are set forth in Section 4 of this Agreement C Except as expressly authorized by this Agreement and unless otherwise permitted by the applicable law Licensee shall not (i) translate publish or display the SDK Specification Documents or Documentation or any copy or part thereof or (ii) use modify or distribute the redistributable Client Libraries in any manner that causes any portion of the redistributable Client Libraries that is not already subject to an OSS license to become subject to the terms of any OSS license D Licensee agrees that it is licensed to use the SDK only in connection with Avaya products (and if applicable in connection with services provided under the Avaya DevConnect Program Agreement) In the event of any conflict between the terms and conditions of this Agreement and the Avaya DevConnect Program Agreement (if applicable) the terms and conditions of the Avaya DevConnect Program Agreement shall prevail E With respect to Software that contains elements provided by third party suppliers Licensee may install and use the Software in accordance with the terms and conditions of the applicable license agreements such as ldquoshrinkwraprdquo or ldquoclick-throughrdquo licenses accompanying or applicable to the Software F Avaya shall have the right at its cost and expense to inspect andor audit (i) by remote polling or other reasonable electronic means at any time and (ii) in person during normal business hours and with reasonable notice Licenseersquos books records and accounts to determine Licenseersquos compliance with this Agreement In the event such inspection or audit uncovers non-compliance with this Agreement then without prejudice to Avayarsquos termination rights hereunder Licensee shall promptly pay Avaya any applicable license fees Licensee agrees to keep a current record of the location of the SDK
22 No Standalone Product Nothing in this Agreement authorizes
or grants Licensee any rights to distribute or otherwise make available
to a third party the SDK in whole or in part or any Derivative Work
in source or object code format on a standalone basis other than the
modifications permitted in Section 21B of this Agreement 23 Proprietary Notices Licensee shall not remove any copyright trade mark or other proprietary notices incorporated in the copies of the SDK Sample Application Code and redistributable files in Licenseersquos possession or control or any modifications thereto Redistributions in binary form or other suitable program format for distribution to the extent expressly permitted must also reproduce Avayarsquos copyright trademarks or other proprietary notices as incorporated in the SDK in any associated Documentation or ldquosplash screensrdquo that display Licensee copyright notices 24 Third-Party Components You acknowledge certain software programs or portions thereof included in the SDK may contain software distributed under third party agreements (ldquoThird Party Componentsrdquo) which may contain terms that
expand or limit rights to use certain portions of the SDK (ldquoThird Party Termsrdquo) Information identifying the copyright holders of the Third Party Components and the Third Party Terms that apply is available in the attached Schedule 1 (if any) SDK Documentation or on Avayarsquos web site at httpsupportavayacomCopyright (or such successor site as designated by Avaya) The open source software license terms provided as Third Party Terms are consistent with the license rights granted in this Agreement and may contain additional rights benefiting You such as modification and distribution of the open source software The Third Party Terms shall take precedence over this Agreement solely with respect to the applicable Third Party Components to the extent that this Agreement imposes greater restrictions on You than the applicable Third Party Terms Licensee is solely responsible for procuring any necessary licenses for Third Party Components including payment of licensing royalties or other amounts to third parties for the use thereof 25 Copies of SDK Licensee may copy the SDK only as necessary to exercise its rights hereunder provided however that Licensee may also make one (1) copy for back-up purposes and any reproduction of the SDK (including derivatives thereof) either in whole or in part shall include the Avaya copyright notice that was provided in the SDK 26 No Reverse Engineering Licensee shall have no rights to any Source Code for any of the software in the SDK except for the explicit rights to use the Source Code as provided to Licensee hereunder Licensee agrees that it shall not cause or permit the disassembly decompilation or reverse engineering of the Software Notwithstanding the foregoing if the SDK is rightfully located in a member state of the European Union and Licensee needs information about the Software in the SDK in order to achieve interoperability of an independently created software program with the Software in the SDK Licensee will first request such information from Avaya Avaya may charge Licensee a reasonable fee for the provision of such information If Avaya refuses to make such information available then Licensee may take steps such as reverse assembly or reverse compilation to the extent necessary solely in order to achieve interoperability of the Software in the SDK with an independently created software program To the extent that the Licensee is expressly permitted by applicable mandatory law to undertake any of the activities listed in this section Licensee will not exercise those rights until Licensee has given Avaya twenty (20) days written notice of its intent to exercise any such rights 27 Responsibility for Development Tools Licensee acknowledges that effective utilization of the SDK may require the use of a development tool compiler and other software and technology of third parties which may be incorporated in the SDK pursuant to Section 24 Licensee is solely responsible for procuring such third party software and technology and the necessary licenses including payment of licensing royalties or other amounts to third parties for the use thereof 28 US Government End Users The SDK shall be classified as commercial computer software and the Documentation is classified as commercial computer software documentation or commercial items pursuant to FAR 12212 or DFAR 2277202 as applicable Any use modification reproduction release performance display or disclosure of the SDK or Documentation by the Government of the United States shall be governed solely by the terms of the Agreement and shall be prohibited except to the extent expressly permitted by the terms of the Agreement 29 Limitation of Rights No right is granted to Licensee to sublicense its rights hereunder All rights not expressly granted are reserved by Avaya and except as expressly set forth herein no license is granted by Avaya under this Agreement directly by implication estoppel or otherwise under any patent copyright trade secret or trademark or other Intellectual Property right of Avaya Nothing herein shall be deemed to authorize Licensee to use Avayas trademarks or trade names in Licensees advertising marketing promotional sales or related materials 210 Nonassertion by Licensee Licensee agrees not to assert any patent rights related to the SDK or applications developed using the SDK against Avaya Avayas distributors Avaya customers or other licensees of the SDK for making using selling offering for sale or importing any products or technology developed using the SDK
211 Avaya Independent Development Licensee understands and agrees that Avaya or its Affiliates may acquire license develop for itself or have others develop for it and market andor distribute similar software to that which Licensee may develop In absence of a separate written agreement to the contrary Avaya or its Affiliates will be free to use any information Licensee provides including problem reports or enhancement requests to Avaya for any purpose subject to any applicable patents or copyrights 212 Feedback and Support Licensee agrees to provide any comments and suggestions regarding the performance of the SDK (a) if applicable on the developer forum of the DevConnect Program on wwwavayacomdevconnect or (b) via the process otherwise indicated by Avaya with respect to the SDK Avaya agrees to monitor the applicable forum but is under no obligation to implement any of the suggestions andor proposals or be required to respond to any questions asked in the forum Self-support tools are available via the Avaya DevConnect programrsquos portal and requires self registration Licensee hereby assigns to Avaya all right title and interest in and to Feedback provided to Avaya 213 Fees and Taxes To the extent that fees are associated with the license of the SDK Licensee agrees to pay to Avaya or pay directly to the applicable government or taxing authority if requested by Avaya all taxes and charges including without limitation penalties and interest which may be imposed by any federal state or local governmental or taxing authority arising hereunder excluding however all taxes computed upon Avayarsquos net income If You move any Software including the SDK and as a result of such move a jurisdiction imposes a duty tax levy or fee (including withholding taxes fees customs or other duties for the import and export of any such Software) then You are solely liable for and agree to pay any such duty taxes levy or other fees 214 No Endorsement Neither the name Avaya its Affiliates nor the names of contributors may be used to endorse or promote products derived from the Avaya SDK without specific prior written permission from Avaya 215 High Risk Activities The Avaya SDK is not fault-tolerant and is not designed manufactured or intended for use or resale as on-line control equipment or in hazardous environments requiring failsafe performance such as in the operation of nuclear facilities aircraft navigation or aircraft communications systems mass transit air traffic control medical or direct life support machines dedicated emergency call handling systems or weapons systems in which the failure of the Avaya SDK could lead directly to death personal injury or severe physical or environmental damage (high risk activities) If Licensee uses the Avaya SDK for high risk activities Licensee does so at Licenseersquos own risk and Licensee assumes all responsibility and liability for such use to the maximum extent such limitation or exclusion is permitted by applicable law Licensee agrees that Avaya and its suppliers will not be liable for any claims or damages arising from or related to use of the Avaya SDK for high risk activities to the maximum extent such limitation or exclusion is permitted by law 216 No Virus Licensee warrants that (i) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will not contain any computer program file that includes time code limitations disabling devices or any other mechanism which will prevent the Supplier Software from being functional at all times (collectively ldquoTime Bombsrdquo) and (ii) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will be free of computer viruses black boxes malware trapdoors and other mechanisms to allow remotehidden attacks or access through unauthorized computerized command and control and will not contain any other computer software routines designed to spy monitor traffic (network sniffers keyloggers) damage or erase such applications interfaces value-added services andor solutions workflows or processes developed using this SDK or data or any computer files or systems of Avaya its Affiliates andor end users (collectively ldquoVirusrdquo) In addition to any other remedies permitted in the Agreement if Licensee breaches its warranties under this Section Licensee will at its expense take remedial action to eliminate any Time Bombs andor Viruses and prevent re-occurrence (including implementing appropriate processes to prevent further occurrences) as well
as provide prompt reasonable assistance to Avaya to materially reduce the effects of the Time Bomb andor Virus 217 Disclaimer Any software security feature is not a guaranty against malicious code deleterious routines and other techniques and tools employed by computer ldquohackersrdquo and other third parties to create security exposures Compromised passwords represent a major security risk Avaya encourages You to create strong passwords using three different character types change Your password regularly and refrain from using the same password regularly You must treat such information as confidential You agree to notify Avaya immediately upon becoming aware of any unauthorized use or breach of Your user name password account or subscription You are responsible for ensuring that Your networks and systems are adequately secured against unauthorized intrusion or attack and regularly back up of Your data and files in accordance with good computing practices 3 OWNERSHIP 31 As between Avaya and Licensee Avaya or its licensors shall own and retain all proprietary rights including all patent copyright trade secret trademark and other Intellectual Property rights in and to the SDK and any corrections bug fixes enhancements updates improvements or modifications thereto and Licensee hereby irrevocably transfers conveys and assigns to Avaya all of its right title and interest therein Avaya shall have the exclusive right to apply for or register any patents mask work rights copyrights and such other proprietary protections with respect thereto Licensee acknowledges that the license granted under this Agreement does not provide Licensee with title or ownership to the SDK but only a right of limited use under the terms and conditions of this Agreement 32 Grant Back License to Avaya Licensee hereby grants to Avaya an irrevocable perpetual non-exclusive sub-licensable royalty-free worldwide license under any and all of Licensees Intellectual Property rights related to any Permitted Modifications to use employ practice make have made sell andor otherwise exploit any and all Permitted Modifications 40 SUPPORT Avaya will not provide any support for the SDK provided under this Agreement or for any Derivative Works including without limitation modifications to the Source Code or applications built by Licensee using the SDK Notwithstanding the above limitations Avaya shall have no obligation to provide support for the use of the SDK or Licensees derivative application services or solutions which may or may not include redistributable Client Libraries or Sample Application Code to any third party to whom Licensee delivers such derivative applications services or solutions Avaya further will not provide fixes patches or repairs for any defects that might exist in the SDK or the Sample Application Code provided under this Agreement In the event that Licensee desires support services for the SDK and provided that Avaya offers such support services (in its sole discretion) Licensee will be required to enter into a Avaya DevConnect Program Agreement or any support agreement with Avaya Nothing herein shall be construed to require Avaya to provide support services or updates upgrades bug fixes or modifications to the SDK 50 CONFIDENTIALITY 51 Protection of Confidential Information Licensee shall take all reasonable measures to maintain the confidentiality of the SDK Specification Documents and other Avaya technical information obtained by it (collectively the ldquoConfidential Informationrdquo) and will not disclose the Confidential Information to any third party Licensee agrees at all times to protect and preserve the SDK in strict confidence and perpetually and shall not use such Confidential Information other than as expressly authorized by Avaya under this Agreement nor shall Licensee disclose any such Confidential Information to third parties without Avayas written consent Licensee further agrees to immediately return to Avaya all Confidential Information (including copies thereof) in Licensees possession custody or control upon termination of this Agreement at any time and for any reason The obligations of confidentiality shall not apply to information which (a) has entered the public domain except where such entry is the result of Licensees breach of this Agreement (b) prior to disclosure hereunder was already rightfully in Licensees possession (c) subsequent to disclosure hereunder is obtained by Licensee on a non-confidential basis from a third party who has the right to disclose such information
to the Licensee (d) is required to be disclosed pursuant to a court order so long as Avaya is given adequate notice and the ability to challenge such required disclosure 52 Press Releases Any press release or publication regarding this Agreement is subject to prior review and written approval of Avaya 60 NO WARRANTY The SDK and Documentation are provided ldquoAS-ISrdquo without any warranty whatsoever AVAYA SPECIFICALLY AND EXPRESSLY DISCLAIMS ANY WARRANTIES OR CONDITIONS STATUTORY OR OTHERWISE INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NONINFRINGEMENT AND SATISFACTORY QUALITY AVAYA DOES NOT WARRANT THAT THE SDK AND DOCUMENTATION ARE SUITABLE FOR LICENSEES USE THAT THE SDK OR DOCUMENTATION ARE WITHOUT DEFECT OR ERROR THAT OPERATION WILL BE UNINTERRUPTED OR THAT DEFECTS WILL BE CORRECTED FURTHER AVAYA MAKES NO WARRANTY REGARDING THE RESULTS OF THE USE OF THE SDK AND DOCUMENTATION NEITHER AVAYA NOR ITS SUPPLIERS MAKE ANY WARRANTY EXPRESS OR IMPLIED THAT SECURITY THREATS AND VULNERABILITIES WILL BE DETECTED OR SOFTWARE WILL RENDER AN END USERrsquoS OR LICENSEErsquoS NETWORK OR PARTICULAR NETWORK ELEMENTS SAFE FROM INTRUSIONS AND OTHER SECURITY BREACHES 70 CONSEQUENTIAL DAMAGES WAIVER EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT AVAYA SHALL NOT BE LIABLE FOR ANY INCIDENTAL INDIRECT SPECIAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT OR USE OF THE SDK OR FOR THE LOSS OR CORRUPTION OF DATA INFORMATION OF ANY KIND BUSINESS PROFITS OR OTHER COMMERCIAL LOSS HOWEVER CAUSED AND WHETHER OR NOT AVAYA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 80 LIMITATION OF LIABILITY EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT IN NO EVENT SHALL AVAYAS TOTAL LIABILITY TO LICENSEE IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT EXCEED FIVE HUNDRED DOLLARS ($500) THE PARTIES AGREE THAT THE LIMITATIONS SPECIFIED IN THIS SECTION WILL APPLY EVEN IF ANY LIMITED REMEDY PROVIDED IN THIS AGREEMENT IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE 90 INDEMNIFICATION Licensee shall indemnify and hold harmless Avaya its Affiliates and their respective officers directors agents suppliers customers and employees from and against all claims damages losses liabilities costs expenses and fees (including fees of attorneys and other professionals) arising from or relating to Licenseersquos use of the SDK with other software such as operating systems and codecs and the direct or indirect distribution or sale of software Derivative Works or other products (including but not limited to applications interfaces and application programming interfaces) developed utilizing the SDK including but not limited to products liability claims and claims of infringement of third party Intellectual Property rights 100 TERM AND TERMINATION 101 This Agreement will continue through December 31
st of the
current calendar year The Agreement will automatically renew for one (1) year terms and run concurrently with Licenseersquos membership in the Avaya DevConnect Program if applicable unless terminated as specified in Section 102 or 103 below and if applicable provided Licensee is a member of the Avaya DevConnect Program in a good-standing as determined by Avaya at its sole discretion 102 Either party shall have the right to terminate the Agreement upon thirty (30) days written notice to the other party 103 Notwithstanding language to the contrary Avaya may terminate this Agreement immediately upon written notice to Licensee for breach of Section 2 (License Grant) Section 5 (Confidentiality) or Section 12 (Compliance with Laws) Avaya may also terminate this license by giving written notice if a
Change In Control should occur or if Licensee becomes insolvent or voluntary or involuntary proceedings by or against Licensee are instituted in bankruptcy or under any insolvency law or a receiver or custodian is appointed for Licensee or proceedings are instituted by or against Licensee for corporate reorganization or the dissolution of Licensee which proceedings if involuntary have not been dismissed within thirty (30) days after the date of filing or Licensee makes an assignment for the benefit of its creditors or substantially all of the assets of Licensee are seized or attached and not released within sixty (60) days thereafter or if Licensee has ceased or threatened to cease to do business in the regular course 104 Upon termination of this Agreement Licensee will immediately cease using the SDK Development Kit and Licensee agrees to destroy all adaptations or copies of the SDK and Documentation or return them to Avaya upon termination of this License 105 The rights and obligations of the parties contained in Sections 23 26 27 210 211 3 and 5 through 18 shall survive any expiration or termination of this Agreement 110 ASSIGNMENT Avaya may assign all or any part of its rights and obligations hereunder Licensee may not assign this Agreement or any interest or rights granted hereunder to any third party without the prior written consent of Avaya The term assign includes but is not limited to any transaction in which there is a Change In Control or reorganization of Licensee pursuant to a merger sale of assets or stock This Agreement shall terminate immediately upon occurrence of any prohibited assignment 120 COMPLIANCE WITH LAWS Licensee shall comply with all applicable laws and regulations including without limitation those applicable to data privacy intellectual property trade secret fraud music performance rights and the export or re-export of technology and will not export or re-export the SDK or any other technical information provided under this Agreement in any form in violation of the export control laws of the United States of America and of any other applicable country For more information on such export laws and regulations Licensee may refer to the resources provided in the websites maintained by the US Commerce Department the US State Department and the US Office of Foreign Assets Control 130 WAIVER The failure to assert any rights under this Agreement including but not limited to the right to terminate in the event of breach or default will not be deemed to constitute a waiver of the right to enforce each and every provision of this Agreement in accordance with their terms 140 SEVERABILITY If any provision of this Agreement is determined to be unenforceable or invalid this Agreement will not be rendered unenforceable or invalid as a whole and the provision will be changed and interpreted so as to best accomplish the objectives of the original provision within the limits of applicable law 150 GOVERNING LAW AND DISPUTE RESOLUTION This Agreement and any dispute claim or controversy arising out of or relating to this Agreement (Dispute) including without limitation those relating to the formation interpretation breach or termination of this Agreement or any issue regarding whether a Dispute is subject to arbitration under this Agreement will be governed by New York State laws excluding conflict of law principles and the United Nations Convention on Contracts for the International Sale of Goods Any Dispute shall be resolved in accordance with the following provisions The disputing party shall give the other party written notice of the Dispute The parties will attempt in good faith to resolve each Dispute within thirty (30) days or such other longer period as the parties may mutually agree following the delivery of such notice by negotiations between designated representatives of the parties who have dispute resolution authority If a Dispute that arose anywhere other than in the United States or is based upon an alleged breach committed anywhere other than in the United States cannot be settled under these procedures and within these timeframes it will be conclusively determined upon request of either party by a final and binding arbitration proceeding to be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a single arbitrator appointed by the parties or (failing agreement) by an arbitrator appointed by the President
of the International Chamber of Commerce (from time to time) except that if the aggregate claims cross claims and counterclaims by any one party against any or all other parties exceed One Million US Dollars at the time all claims including cross claims and counterclaims are filed the proceeding will be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a panel of three arbitrator(s) appointed in accordance with the Rules of Arbitration of the International Chamber of Commerce The arbitration will be conducted in the English language at a location agreed by the parties or (failing agreement) ordered by the arbitrator(s) The arbitrator(s) will have authority only to award compensatory damages within the scope of the limitations of this Agreement and will not award punitive or exemplary damages The arbitrator(s) will not have the authority to limit expand or otherwise modify the terms of this Agreement The ruling by the arbitrator(s) will be final and binding on the parties and may be entered in any court having jurisdiction over the parties or any of their assets The parties will evenly split the cost of the arbitrator(s) fees but each party will bear its own attorneys fees and other costs associated with the arbitration The parties their representatives other participants and the arbitrator(s) will hold the existence content and results of the arbitration in strict confidence to the fullest extent permitted by law Any disclosure of the existence content and results of the arbitration shall be as limited and narrowed as required to comply with the applicable law By way of illustration if the applicable law mandates the disclosure of the monetary amount of an arbitration award only the underlying opinion or rationale for that award may not be disclosed If a Dispute by one party against the other that arose in the United States or is based upon an alleged breach committed in the United States cannot be settled under the procedures and within the timeframe set forth above then either party may bring an action or proceeding solely in either the Supreme Court of the State of New York New York County or the United States District Court for the Southern District of New York Except as otherwise stated above with regard to arbitration of Disputes that arise anywhere other than in the United States or are based upon an alleged breach committed anywhere other than in the United States each party to this Agreement consents to the exclusive jurisdiction of those courts including their appellate courts for the purpose of all actions and proceedings The parties agree that the arbitration provision in this section may be enforced by injunction or other equitable order and no bond or security of any kind will be required with respect to any such injunction or order Nothing in this section will be construed to preclude either party from seeking provisional remedies including but not limited to temporary restraining orders and preliminary injunctions from any court of competent jurisdiction in order to protect its rights including its rights pending arbitration at any time In addition and notwithstanding the foregoing Avaya shall be entitled to take any necessary legal action at any time including without limitation seeking immediate injunctive relief from a court of competent jurisdiction in order to protect Avayas intellectual property and its confidential or proprietary information (including but not limited to trade secrets) 160 IMPORTEXPORT CONTROL Licensee is advised that the SDK is of US origin and subject to the US Export Administration Regulations (ldquoEARrdquo) The SDK also may be subject to applicable local country importexport laws and regulations Diversion contrary to US andor applicable local country law andor regulation is prohibited Licensee agrees not to directly or indirectly export re-export import download or transmit the SDK to any country end user or for any use that is contrary to applicable US andor local country regulation or statute (including but not limited to those countries embargoed by the US government) Licensee represents that any governmental agency has not issued sanctions against Licensee or otherwise suspended revoked or denied Licensees importexport privileges Licensee agrees not to use or transfer the SDK for any use relating to nuclear chemical or biological weapons or missile technology unless authorized by the US andor any applicable local government by regulation or specific written license Additionally Licensee is advised that the SDK may contain encryption algorithm or source code that may not be exported to government or military
end users without a license issued by the US Bureau of Industry and Security and any other countryrsquos governmental agencies where applicable 170 AGREEMENT IN ENGLISH The parties confirm that it is their wish that the Agreement as well as all other documents relating hereto including all notices have been and shall be drawn up in the English language only Les parties aux preacutesentes confirment leur volonteacute que cette convention de mecircme que tous les documents y compris tout avis qui sy rattachent soient reacutedigeacutes en langue anglaise 180 ENTIRE AGREEMENT This Agreement its exhibits and other agreements or documents referenced herein constitute the full and complete understanding and agreement between the parties and supersede all contemporaneous and prior understandings agreements (excluding the Avaya DevConnect Program Agreement) and representations relating to the subject matter hereof No modifications alterations or amendments shall be effective unless in writing signed by both parties to this Agreement 19 REDISTRIBUTABLE CLIENT FILES The list of SDK client files that can be redistributed if any are in the SDK in a file called Redistributabletxt
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
workflows or processes for use with Avaya products integration of such applications interfaces workflows and processes with Avaya products and interoperability testing of the foregoing with Avaya products (ii) Licensee must ensure that the modifications made to the Sample Application Code as permitted in clause (i) of this Section 21B are compatible andor interoperable with Avaya products andor integrated therewith (iii) Licensee may compile or otherwise prepare for distribution the Sample Application Code with Permitted Modifications into an object code or other suitable program format for distribution provided that such sublicense is subject to an end user license agreement that is consistent with the terms of this Agreement and if applicable the Avaya DevConnect Program Agreement and is equally as protective as Licenseersquos standard software license terms but in no event shall the standard of care be less than a reasonable degree of care Under no circumstances shall Licensee enable the use or activation of any of Avayarsquos Intellectual Property by an end user without such end user having acquired the additional necessary licenses to Avaya Intellectual Property Avayarsquos support obligations for the SDK Sample Application Code and any Derivative Works are set forth in Section 4 of this Agreement C Except as expressly authorized by this Agreement and unless otherwise permitted by the applicable law Licensee shall not (i) translate publish or display the SDK Specification Documents or Documentation or any copy or part thereof or (ii) use modify or distribute the redistributable Client Libraries in any manner that causes any portion of the redistributable Client Libraries that is not already subject to an OSS license to become subject to the terms of any OSS license D Licensee agrees that it is licensed to use the SDK only in connection with Avaya products (and if applicable in connection with services provided under the Avaya DevConnect Program Agreement) In the event of any conflict between the terms and conditions of this Agreement and the Avaya DevConnect Program Agreement (if applicable) the terms and conditions of the Avaya DevConnect Program Agreement shall prevail E With respect to Software that contains elements provided by third party suppliers Licensee may install and use the Software in accordance with the terms and conditions of the applicable license agreements such as ldquoshrinkwraprdquo or ldquoclick-throughrdquo licenses accompanying or applicable to the Software F Avaya shall have the right at its cost and expense to inspect andor audit (i) by remote polling or other reasonable electronic means at any time and (ii) in person during normal business hours and with reasonable notice Licenseersquos books records and accounts to determine Licenseersquos compliance with this Agreement In the event such inspection or audit uncovers non-compliance with this Agreement then without prejudice to Avayarsquos termination rights hereunder Licensee shall promptly pay Avaya any applicable license fees Licensee agrees to keep a current record of the location of the SDK
22 No Standalone Product Nothing in this Agreement authorizes
or grants Licensee any rights to distribute or otherwise make available
to a third party the SDK in whole or in part or any Derivative Work
in source or object code format on a standalone basis other than the
modifications permitted in Section 21B of this Agreement 23 Proprietary Notices Licensee shall not remove any copyright trade mark or other proprietary notices incorporated in the copies of the SDK Sample Application Code and redistributable files in Licenseersquos possession or control or any modifications thereto Redistributions in binary form or other suitable program format for distribution to the extent expressly permitted must also reproduce Avayarsquos copyright trademarks or other proprietary notices as incorporated in the SDK in any associated Documentation or ldquosplash screensrdquo that display Licensee copyright notices 24 Third-Party Components You acknowledge certain software programs or portions thereof included in the SDK may contain software distributed under third party agreements (ldquoThird Party Componentsrdquo) which may contain terms that
expand or limit rights to use certain portions of the SDK (ldquoThird Party Termsrdquo) Information identifying the copyright holders of the Third Party Components and the Third Party Terms that apply is available in the attached Schedule 1 (if any) SDK Documentation or on Avayarsquos web site at httpsupportavayacomCopyright (or such successor site as designated by Avaya) The open source software license terms provided as Third Party Terms are consistent with the license rights granted in this Agreement and may contain additional rights benefiting You such as modification and distribution of the open source software The Third Party Terms shall take precedence over this Agreement solely with respect to the applicable Third Party Components to the extent that this Agreement imposes greater restrictions on You than the applicable Third Party Terms Licensee is solely responsible for procuring any necessary licenses for Third Party Components including payment of licensing royalties or other amounts to third parties for the use thereof 25 Copies of SDK Licensee may copy the SDK only as necessary to exercise its rights hereunder provided however that Licensee may also make one (1) copy for back-up purposes and any reproduction of the SDK (including derivatives thereof) either in whole or in part shall include the Avaya copyright notice that was provided in the SDK 26 No Reverse Engineering Licensee shall have no rights to any Source Code for any of the software in the SDK except for the explicit rights to use the Source Code as provided to Licensee hereunder Licensee agrees that it shall not cause or permit the disassembly decompilation or reverse engineering of the Software Notwithstanding the foregoing if the SDK is rightfully located in a member state of the European Union and Licensee needs information about the Software in the SDK in order to achieve interoperability of an independently created software program with the Software in the SDK Licensee will first request such information from Avaya Avaya may charge Licensee a reasonable fee for the provision of such information If Avaya refuses to make such information available then Licensee may take steps such as reverse assembly or reverse compilation to the extent necessary solely in order to achieve interoperability of the Software in the SDK with an independently created software program To the extent that the Licensee is expressly permitted by applicable mandatory law to undertake any of the activities listed in this section Licensee will not exercise those rights until Licensee has given Avaya twenty (20) days written notice of its intent to exercise any such rights 27 Responsibility for Development Tools Licensee acknowledges that effective utilization of the SDK may require the use of a development tool compiler and other software and technology of third parties which may be incorporated in the SDK pursuant to Section 24 Licensee is solely responsible for procuring such third party software and technology and the necessary licenses including payment of licensing royalties or other amounts to third parties for the use thereof 28 US Government End Users The SDK shall be classified as commercial computer software and the Documentation is classified as commercial computer software documentation or commercial items pursuant to FAR 12212 or DFAR 2277202 as applicable Any use modification reproduction release performance display or disclosure of the SDK or Documentation by the Government of the United States shall be governed solely by the terms of the Agreement and shall be prohibited except to the extent expressly permitted by the terms of the Agreement 29 Limitation of Rights No right is granted to Licensee to sublicense its rights hereunder All rights not expressly granted are reserved by Avaya and except as expressly set forth herein no license is granted by Avaya under this Agreement directly by implication estoppel or otherwise under any patent copyright trade secret or trademark or other Intellectual Property right of Avaya Nothing herein shall be deemed to authorize Licensee to use Avayas trademarks or trade names in Licensees advertising marketing promotional sales or related materials 210 Nonassertion by Licensee Licensee agrees not to assert any patent rights related to the SDK or applications developed using the SDK against Avaya Avayas distributors Avaya customers or other licensees of the SDK for making using selling offering for sale or importing any products or technology developed using the SDK
211 Avaya Independent Development Licensee understands and agrees that Avaya or its Affiliates may acquire license develop for itself or have others develop for it and market andor distribute similar software to that which Licensee may develop In absence of a separate written agreement to the contrary Avaya or its Affiliates will be free to use any information Licensee provides including problem reports or enhancement requests to Avaya for any purpose subject to any applicable patents or copyrights 212 Feedback and Support Licensee agrees to provide any comments and suggestions regarding the performance of the SDK (a) if applicable on the developer forum of the DevConnect Program on wwwavayacomdevconnect or (b) via the process otherwise indicated by Avaya with respect to the SDK Avaya agrees to monitor the applicable forum but is under no obligation to implement any of the suggestions andor proposals or be required to respond to any questions asked in the forum Self-support tools are available via the Avaya DevConnect programrsquos portal and requires self registration Licensee hereby assigns to Avaya all right title and interest in and to Feedback provided to Avaya 213 Fees and Taxes To the extent that fees are associated with the license of the SDK Licensee agrees to pay to Avaya or pay directly to the applicable government or taxing authority if requested by Avaya all taxes and charges including without limitation penalties and interest which may be imposed by any federal state or local governmental or taxing authority arising hereunder excluding however all taxes computed upon Avayarsquos net income If You move any Software including the SDK and as a result of such move a jurisdiction imposes a duty tax levy or fee (including withholding taxes fees customs or other duties for the import and export of any such Software) then You are solely liable for and agree to pay any such duty taxes levy or other fees 214 No Endorsement Neither the name Avaya its Affiliates nor the names of contributors may be used to endorse or promote products derived from the Avaya SDK without specific prior written permission from Avaya 215 High Risk Activities The Avaya SDK is not fault-tolerant and is not designed manufactured or intended for use or resale as on-line control equipment or in hazardous environments requiring failsafe performance such as in the operation of nuclear facilities aircraft navigation or aircraft communications systems mass transit air traffic control medical or direct life support machines dedicated emergency call handling systems or weapons systems in which the failure of the Avaya SDK could lead directly to death personal injury or severe physical or environmental damage (high risk activities) If Licensee uses the Avaya SDK for high risk activities Licensee does so at Licenseersquos own risk and Licensee assumes all responsibility and liability for such use to the maximum extent such limitation or exclusion is permitted by applicable law Licensee agrees that Avaya and its suppliers will not be liable for any claims or damages arising from or related to use of the Avaya SDK for high risk activities to the maximum extent such limitation or exclusion is permitted by law 216 No Virus Licensee warrants that (i) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will not contain any computer program file that includes time code limitations disabling devices or any other mechanism which will prevent the Supplier Software from being functional at all times (collectively ldquoTime Bombsrdquo) and (ii) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will be free of computer viruses black boxes malware trapdoors and other mechanisms to allow remotehidden attacks or access through unauthorized computerized command and control and will not contain any other computer software routines designed to spy monitor traffic (network sniffers keyloggers) damage or erase such applications interfaces value-added services andor solutions workflows or processes developed using this SDK or data or any computer files or systems of Avaya its Affiliates andor end users (collectively ldquoVirusrdquo) In addition to any other remedies permitted in the Agreement if Licensee breaches its warranties under this Section Licensee will at its expense take remedial action to eliminate any Time Bombs andor Viruses and prevent re-occurrence (including implementing appropriate processes to prevent further occurrences) as well
as provide prompt reasonable assistance to Avaya to materially reduce the effects of the Time Bomb andor Virus 217 Disclaimer Any software security feature is not a guaranty against malicious code deleterious routines and other techniques and tools employed by computer ldquohackersrdquo and other third parties to create security exposures Compromised passwords represent a major security risk Avaya encourages You to create strong passwords using three different character types change Your password regularly and refrain from using the same password regularly You must treat such information as confidential You agree to notify Avaya immediately upon becoming aware of any unauthorized use or breach of Your user name password account or subscription You are responsible for ensuring that Your networks and systems are adequately secured against unauthorized intrusion or attack and regularly back up of Your data and files in accordance with good computing practices 3 OWNERSHIP 31 As between Avaya and Licensee Avaya or its licensors shall own and retain all proprietary rights including all patent copyright trade secret trademark and other Intellectual Property rights in and to the SDK and any corrections bug fixes enhancements updates improvements or modifications thereto and Licensee hereby irrevocably transfers conveys and assigns to Avaya all of its right title and interest therein Avaya shall have the exclusive right to apply for or register any patents mask work rights copyrights and such other proprietary protections with respect thereto Licensee acknowledges that the license granted under this Agreement does not provide Licensee with title or ownership to the SDK but only a right of limited use under the terms and conditions of this Agreement 32 Grant Back License to Avaya Licensee hereby grants to Avaya an irrevocable perpetual non-exclusive sub-licensable royalty-free worldwide license under any and all of Licensees Intellectual Property rights related to any Permitted Modifications to use employ practice make have made sell andor otherwise exploit any and all Permitted Modifications 40 SUPPORT Avaya will not provide any support for the SDK provided under this Agreement or for any Derivative Works including without limitation modifications to the Source Code or applications built by Licensee using the SDK Notwithstanding the above limitations Avaya shall have no obligation to provide support for the use of the SDK or Licensees derivative application services or solutions which may or may not include redistributable Client Libraries or Sample Application Code to any third party to whom Licensee delivers such derivative applications services or solutions Avaya further will not provide fixes patches or repairs for any defects that might exist in the SDK or the Sample Application Code provided under this Agreement In the event that Licensee desires support services for the SDK and provided that Avaya offers such support services (in its sole discretion) Licensee will be required to enter into a Avaya DevConnect Program Agreement or any support agreement with Avaya Nothing herein shall be construed to require Avaya to provide support services or updates upgrades bug fixes or modifications to the SDK 50 CONFIDENTIALITY 51 Protection of Confidential Information Licensee shall take all reasonable measures to maintain the confidentiality of the SDK Specification Documents and other Avaya technical information obtained by it (collectively the ldquoConfidential Informationrdquo) and will not disclose the Confidential Information to any third party Licensee agrees at all times to protect and preserve the SDK in strict confidence and perpetually and shall not use such Confidential Information other than as expressly authorized by Avaya under this Agreement nor shall Licensee disclose any such Confidential Information to third parties without Avayas written consent Licensee further agrees to immediately return to Avaya all Confidential Information (including copies thereof) in Licensees possession custody or control upon termination of this Agreement at any time and for any reason The obligations of confidentiality shall not apply to information which (a) has entered the public domain except where such entry is the result of Licensees breach of this Agreement (b) prior to disclosure hereunder was already rightfully in Licensees possession (c) subsequent to disclosure hereunder is obtained by Licensee on a non-confidential basis from a third party who has the right to disclose such information
to the Licensee (d) is required to be disclosed pursuant to a court order so long as Avaya is given adequate notice and the ability to challenge such required disclosure 52 Press Releases Any press release or publication regarding this Agreement is subject to prior review and written approval of Avaya 60 NO WARRANTY The SDK and Documentation are provided ldquoAS-ISrdquo without any warranty whatsoever AVAYA SPECIFICALLY AND EXPRESSLY DISCLAIMS ANY WARRANTIES OR CONDITIONS STATUTORY OR OTHERWISE INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NONINFRINGEMENT AND SATISFACTORY QUALITY AVAYA DOES NOT WARRANT THAT THE SDK AND DOCUMENTATION ARE SUITABLE FOR LICENSEES USE THAT THE SDK OR DOCUMENTATION ARE WITHOUT DEFECT OR ERROR THAT OPERATION WILL BE UNINTERRUPTED OR THAT DEFECTS WILL BE CORRECTED FURTHER AVAYA MAKES NO WARRANTY REGARDING THE RESULTS OF THE USE OF THE SDK AND DOCUMENTATION NEITHER AVAYA NOR ITS SUPPLIERS MAKE ANY WARRANTY EXPRESS OR IMPLIED THAT SECURITY THREATS AND VULNERABILITIES WILL BE DETECTED OR SOFTWARE WILL RENDER AN END USERrsquoS OR LICENSEErsquoS NETWORK OR PARTICULAR NETWORK ELEMENTS SAFE FROM INTRUSIONS AND OTHER SECURITY BREACHES 70 CONSEQUENTIAL DAMAGES WAIVER EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT AVAYA SHALL NOT BE LIABLE FOR ANY INCIDENTAL INDIRECT SPECIAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT OR USE OF THE SDK OR FOR THE LOSS OR CORRUPTION OF DATA INFORMATION OF ANY KIND BUSINESS PROFITS OR OTHER COMMERCIAL LOSS HOWEVER CAUSED AND WHETHER OR NOT AVAYA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 80 LIMITATION OF LIABILITY EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT IN NO EVENT SHALL AVAYAS TOTAL LIABILITY TO LICENSEE IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT EXCEED FIVE HUNDRED DOLLARS ($500) THE PARTIES AGREE THAT THE LIMITATIONS SPECIFIED IN THIS SECTION WILL APPLY EVEN IF ANY LIMITED REMEDY PROVIDED IN THIS AGREEMENT IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE 90 INDEMNIFICATION Licensee shall indemnify and hold harmless Avaya its Affiliates and their respective officers directors agents suppliers customers and employees from and against all claims damages losses liabilities costs expenses and fees (including fees of attorneys and other professionals) arising from or relating to Licenseersquos use of the SDK with other software such as operating systems and codecs and the direct or indirect distribution or sale of software Derivative Works or other products (including but not limited to applications interfaces and application programming interfaces) developed utilizing the SDK including but not limited to products liability claims and claims of infringement of third party Intellectual Property rights 100 TERM AND TERMINATION 101 This Agreement will continue through December 31
st of the
current calendar year The Agreement will automatically renew for one (1) year terms and run concurrently with Licenseersquos membership in the Avaya DevConnect Program if applicable unless terminated as specified in Section 102 or 103 below and if applicable provided Licensee is a member of the Avaya DevConnect Program in a good-standing as determined by Avaya at its sole discretion 102 Either party shall have the right to terminate the Agreement upon thirty (30) days written notice to the other party 103 Notwithstanding language to the contrary Avaya may terminate this Agreement immediately upon written notice to Licensee for breach of Section 2 (License Grant) Section 5 (Confidentiality) or Section 12 (Compliance with Laws) Avaya may also terminate this license by giving written notice if a
Change In Control should occur or if Licensee becomes insolvent or voluntary or involuntary proceedings by or against Licensee are instituted in bankruptcy or under any insolvency law or a receiver or custodian is appointed for Licensee or proceedings are instituted by or against Licensee for corporate reorganization or the dissolution of Licensee which proceedings if involuntary have not been dismissed within thirty (30) days after the date of filing or Licensee makes an assignment for the benefit of its creditors or substantially all of the assets of Licensee are seized or attached and not released within sixty (60) days thereafter or if Licensee has ceased or threatened to cease to do business in the regular course 104 Upon termination of this Agreement Licensee will immediately cease using the SDK Development Kit and Licensee agrees to destroy all adaptations or copies of the SDK and Documentation or return them to Avaya upon termination of this License 105 The rights and obligations of the parties contained in Sections 23 26 27 210 211 3 and 5 through 18 shall survive any expiration or termination of this Agreement 110 ASSIGNMENT Avaya may assign all or any part of its rights and obligations hereunder Licensee may not assign this Agreement or any interest or rights granted hereunder to any third party without the prior written consent of Avaya The term assign includes but is not limited to any transaction in which there is a Change In Control or reorganization of Licensee pursuant to a merger sale of assets or stock This Agreement shall terminate immediately upon occurrence of any prohibited assignment 120 COMPLIANCE WITH LAWS Licensee shall comply with all applicable laws and regulations including without limitation those applicable to data privacy intellectual property trade secret fraud music performance rights and the export or re-export of technology and will not export or re-export the SDK or any other technical information provided under this Agreement in any form in violation of the export control laws of the United States of America and of any other applicable country For more information on such export laws and regulations Licensee may refer to the resources provided in the websites maintained by the US Commerce Department the US State Department and the US Office of Foreign Assets Control 130 WAIVER The failure to assert any rights under this Agreement including but not limited to the right to terminate in the event of breach or default will not be deemed to constitute a waiver of the right to enforce each and every provision of this Agreement in accordance with their terms 140 SEVERABILITY If any provision of this Agreement is determined to be unenforceable or invalid this Agreement will not be rendered unenforceable or invalid as a whole and the provision will be changed and interpreted so as to best accomplish the objectives of the original provision within the limits of applicable law 150 GOVERNING LAW AND DISPUTE RESOLUTION This Agreement and any dispute claim or controversy arising out of or relating to this Agreement (Dispute) including without limitation those relating to the formation interpretation breach or termination of this Agreement or any issue regarding whether a Dispute is subject to arbitration under this Agreement will be governed by New York State laws excluding conflict of law principles and the United Nations Convention on Contracts for the International Sale of Goods Any Dispute shall be resolved in accordance with the following provisions The disputing party shall give the other party written notice of the Dispute The parties will attempt in good faith to resolve each Dispute within thirty (30) days or such other longer period as the parties may mutually agree following the delivery of such notice by negotiations between designated representatives of the parties who have dispute resolution authority If a Dispute that arose anywhere other than in the United States or is based upon an alleged breach committed anywhere other than in the United States cannot be settled under these procedures and within these timeframes it will be conclusively determined upon request of either party by a final and binding arbitration proceeding to be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a single arbitrator appointed by the parties or (failing agreement) by an arbitrator appointed by the President
of the International Chamber of Commerce (from time to time) except that if the aggregate claims cross claims and counterclaims by any one party against any or all other parties exceed One Million US Dollars at the time all claims including cross claims and counterclaims are filed the proceeding will be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a panel of three arbitrator(s) appointed in accordance with the Rules of Arbitration of the International Chamber of Commerce The arbitration will be conducted in the English language at a location agreed by the parties or (failing agreement) ordered by the arbitrator(s) The arbitrator(s) will have authority only to award compensatory damages within the scope of the limitations of this Agreement and will not award punitive or exemplary damages The arbitrator(s) will not have the authority to limit expand or otherwise modify the terms of this Agreement The ruling by the arbitrator(s) will be final and binding on the parties and may be entered in any court having jurisdiction over the parties or any of their assets The parties will evenly split the cost of the arbitrator(s) fees but each party will bear its own attorneys fees and other costs associated with the arbitration The parties their representatives other participants and the arbitrator(s) will hold the existence content and results of the arbitration in strict confidence to the fullest extent permitted by law Any disclosure of the existence content and results of the arbitration shall be as limited and narrowed as required to comply with the applicable law By way of illustration if the applicable law mandates the disclosure of the monetary amount of an arbitration award only the underlying opinion or rationale for that award may not be disclosed If a Dispute by one party against the other that arose in the United States or is based upon an alleged breach committed in the United States cannot be settled under the procedures and within the timeframe set forth above then either party may bring an action or proceeding solely in either the Supreme Court of the State of New York New York County or the United States District Court for the Southern District of New York Except as otherwise stated above with regard to arbitration of Disputes that arise anywhere other than in the United States or are based upon an alleged breach committed anywhere other than in the United States each party to this Agreement consents to the exclusive jurisdiction of those courts including their appellate courts for the purpose of all actions and proceedings The parties agree that the arbitration provision in this section may be enforced by injunction or other equitable order and no bond or security of any kind will be required with respect to any such injunction or order Nothing in this section will be construed to preclude either party from seeking provisional remedies including but not limited to temporary restraining orders and preliminary injunctions from any court of competent jurisdiction in order to protect its rights including its rights pending arbitration at any time In addition and notwithstanding the foregoing Avaya shall be entitled to take any necessary legal action at any time including without limitation seeking immediate injunctive relief from a court of competent jurisdiction in order to protect Avayas intellectual property and its confidential or proprietary information (including but not limited to trade secrets) 160 IMPORTEXPORT CONTROL Licensee is advised that the SDK is of US origin and subject to the US Export Administration Regulations (ldquoEARrdquo) The SDK also may be subject to applicable local country importexport laws and regulations Diversion contrary to US andor applicable local country law andor regulation is prohibited Licensee agrees not to directly or indirectly export re-export import download or transmit the SDK to any country end user or for any use that is contrary to applicable US andor local country regulation or statute (including but not limited to those countries embargoed by the US government) Licensee represents that any governmental agency has not issued sanctions against Licensee or otherwise suspended revoked or denied Licensees importexport privileges Licensee agrees not to use or transfer the SDK for any use relating to nuclear chemical or biological weapons or missile technology unless authorized by the US andor any applicable local government by regulation or specific written license Additionally Licensee is advised that the SDK may contain encryption algorithm or source code that may not be exported to government or military
end users without a license issued by the US Bureau of Industry and Security and any other countryrsquos governmental agencies where applicable 170 AGREEMENT IN ENGLISH The parties confirm that it is their wish that the Agreement as well as all other documents relating hereto including all notices have been and shall be drawn up in the English language only Les parties aux preacutesentes confirment leur volonteacute que cette convention de mecircme que tous les documents y compris tout avis qui sy rattachent soient reacutedigeacutes en langue anglaise 180 ENTIRE AGREEMENT This Agreement its exhibits and other agreements or documents referenced herein constitute the full and complete understanding and agreement between the parties and supersede all contemporaneous and prior understandings agreements (excluding the Avaya DevConnect Program Agreement) and representations relating to the subject matter hereof No modifications alterations or amendments shall be effective unless in writing signed by both parties to this Agreement 19 REDISTRIBUTABLE CLIENT FILES The list of SDK client files that can be redistributed if any are in the SDK in a file called Redistributabletxt
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
211 Avaya Independent Development Licensee understands and agrees that Avaya or its Affiliates may acquire license develop for itself or have others develop for it and market andor distribute similar software to that which Licensee may develop In absence of a separate written agreement to the contrary Avaya or its Affiliates will be free to use any information Licensee provides including problem reports or enhancement requests to Avaya for any purpose subject to any applicable patents or copyrights 212 Feedback and Support Licensee agrees to provide any comments and suggestions regarding the performance of the SDK (a) if applicable on the developer forum of the DevConnect Program on wwwavayacomdevconnect or (b) via the process otherwise indicated by Avaya with respect to the SDK Avaya agrees to monitor the applicable forum but is under no obligation to implement any of the suggestions andor proposals or be required to respond to any questions asked in the forum Self-support tools are available via the Avaya DevConnect programrsquos portal and requires self registration Licensee hereby assigns to Avaya all right title and interest in and to Feedback provided to Avaya 213 Fees and Taxes To the extent that fees are associated with the license of the SDK Licensee agrees to pay to Avaya or pay directly to the applicable government or taxing authority if requested by Avaya all taxes and charges including without limitation penalties and interest which may be imposed by any federal state or local governmental or taxing authority arising hereunder excluding however all taxes computed upon Avayarsquos net income If You move any Software including the SDK and as a result of such move a jurisdiction imposes a duty tax levy or fee (including withholding taxes fees customs or other duties for the import and export of any such Software) then You are solely liable for and agree to pay any such duty taxes levy or other fees 214 No Endorsement Neither the name Avaya its Affiliates nor the names of contributors may be used to endorse or promote products derived from the Avaya SDK without specific prior written permission from Avaya 215 High Risk Activities The Avaya SDK is not fault-tolerant and is not designed manufactured or intended for use or resale as on-line control equipment or in hazardous environments requiring failsafe performance such as in the operation of nuclear facilities aircraft navigation or aircraft communications systems mass transit air traffic control medical or direct life support machines dedicated emergency call handling systems or weapons systems in which the failure of the Avaya SDK could lead directly to death personal injury or severe physical or environmental damage (high risk activities) If Licensee uses the Avaya SDK for high risk activities Licensee does so at Licenseersquos own risk and Licensee assumes all responsibility and liability for such use to the maximum extent such limitation or exclusion is permitted by applicable law Licensee agrees that Avaya and its suppliers will not be liable for any claims or damages arising from or related to use of the Avaya SDK for high risk activities to the maximum extent such limitation or exclusion is permitted by law 216 No Virus Licensee warrants that (i) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will not contain any computer program file that includes time code limitations disabling devices or any other mechanism which will prevent the Supplier Software from being functional at all times (collectively ldquoTime Bombsrdquo) and (ii) the applications interfaces value-added services andor solutions workflows or processes Licensee develops using this SDK will be free of computer viruses black boxes malware trapdoors and other mechanisms to allow remotehidden attacks or access through unauthorized computerized command and control and will not contain any other computer software routines designed to spy monitor traffic (network sniffers keyloggers) damage or erase such applications interfaces value-added services andor solutions workflows or processes developed using this SDK or data or any computer files or systems of Avaya its Affiliates andor end users (collectively ldquoVirusrdquo) In addition to any other remedies permitted in the Agreement if Licensee breaches its warranties under this Section Licensee will at its expense take remedial action to eliminate any Time Bombs andor Viruses and prevent re-occurrence (including implementing appropriate processes to prevent further occurrences) as well
as provide prompt reasonable assistance to Avaya to materially reduce the effects of the Time Bomb andor Virus 217 Disclaimer Any software security feature is not a guaranty against malicious code deleterious routines and other techniques and tools employed by computer ldquohackersrdquo and other third parties to create security exposures Compromised passwords represent a major security risk Avaya encourages You to create strong passwords using three different character types change Your password regularly and refrain from using the same password regularly You must treat such information as confidential You agree to notify Avaya immediately upon becoming aware of any unauthorized use or breach of Your user name password account or subscription You are responsible for ensuring that Your networks and systems are adequately secured against unauthorized intrusion or attack and regularly back up of Your data and files in accordance with good computing practices 3 OWNERSHIP 31 As between Avaya and Licensee Avaya or its licensors shall own and retain all proprietary rights including all patent copyright trade secret trademark and other Intellectual Property rights in and to the SDK and any corrections bug fixes enhancements updates improvements or modifications thereto and Licensee hereby irrevocably transfers conveys and assigns to Avaya all of its right title and interest therein Avaya shall have the exclusive right to apply for or register any patents mask work rights copyrights and such other proprietary protections with respect thereto Licensee acknowledges that the license granted under this Agreement does not provide Licensee with title or ownership to the SDK but only a right of limited use under the terms and conditions of this Agreement 32 Grant Back License to Avaya Licensee hereby grants to Avaya an irrevocable perpetual non-exclusive sub-licensable royalty-free worldwide license under any and all of Licensees Intellectual Property rights related to any Permitted Modifications to use employ practice make have made sell andor otherwise exploit any and all Permitted Modifications 40 SUPPORT Avaya will not provide any support for the SDK provided under this Agreement or for any Derivative Works including without limitation modifications to the Source Code or applications built by Licensee using the SDK Notwithstanding the above limitations Avaya shall have no obligation to provide support for the use of the SDK or Licensees derivative application services or solutions which may or may not include redistributable Client Libraries or Sample Application Code to any third party to whom Licensee delivers such derivative applications services or solutions Avaya further will not provide fixes patches or repairs for any defects that might exist in the SDK or the Sample Application Code provided under this Agreement In the event that Licensee desires support services for the SDK and provided that Avaya offers such support services (in its sole discretion) Licensee will be required to enter into a Avaya DevConnect Program Agreement or any support agreement with Avaya Nothing herein shall be construed to require Avaya to provide support services or updates upgrades bug fixes or modifications to the SDK 50 CONFIDENTIALITY 51 Protection of Confidential Information Licensee shall take all reasonable measures to maintain the confidentiality of the SDK Specification Documents and other Avaya technical information obtained by it (collectively the ldquoConfidential Informationrdquo) and will not disclose the Confidential Information to any third party Licensee agrees at all times to protect and preserve the SDK in strict confidence and perpetually and shall not use such Confidential Information other than as expressly authorized by Avaya under this Agreement nor shall Licensee disclose any such Confidential Information to third parties without Avayas written consent Licensee further agrees to immediately return to Avaya all Confidential Information (including copies thereof) in Licensees possession custody or control upon termination of this Agreement at any time and for any reason The obligations of confidentiality shall not apply to information which (a) has entered the public domain except where such entry is the result of Licensees breach of this Agreement (b) prior to disclosure hereunder was already rightfully in Licensees possession (c) subsequent to disclosure hereunder is obtained by Licensee on a non-confidential basis from a third party who has the right to disclose such information
to the Licensee (d) is required to be disclosed pursuant to a court order so long as Avaya is given adequate notice and the ability to challenge such required disclosure 52 Press Releases Any press release or publication regarding this Agreement is subject to prior review and written approval of Avaya 60 NO WARRANTY The SDK and Documentation are provided ldquoAS-ISrdquo without any warranty whatsoever AVAYA SPECIFICALLY AND EXPRESSLY DISCLAIMS ANY WARRANTIES OR CONDITIONS STATUTORY OR OTHERWISE INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NONINFRINGEMENT AND SATISFACTORY QUALITY AVAYA DOES NOT WARRANT THAT THE SDK AND DOCUMENTATION ARE SUITABLE FOR LICENSEES USE THAT THE SDK OR DOCUMENTATION ARE WITHOUT DEFECT OR ERROR THAT OPERATION WILL BE UNINTERRUPTED OR THAT DEFECTS WILL BE CORRECTED FURTHER AVAYA MAKES NO WARRANTY REGARDING THE RESULTS OF THE USE OF THE SDK AND DOCUMENTATION NEITHER AVAYA NOR ITS SUPPLIERS MAKE ANY WARRANTY EXPRESS OR IMPLIED THAT SECURITY THREATS AND VULNERABILITIES WILL BE DETECTED OR SOFTWARE WILL RENDER AN END USERrsquoS OR LICENSEErsquoS NETWORK OR PARTICULAR NETWORK ELEMENTS SAFE FROM INTRUSIONS AND OTHER SECURITY BREACHES 70 CONSEQUENTIAL DAMAGES WAIVER EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT AVAYA SHALL NOT BE LIABLE FOR ANY INCIDENTAL INDIRECT SPECIAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT OR USE OF THE SDK OR FOR THE LOSS OR CORRUPTION OF DATA INFORMATION OF ANY KIND BUSINESS PROFITS OR OTHER COMMERCIAL LOSS HOWEVER CAUSED AND WHETHER OR NOT AVAYA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 80 LIMITATION OF LIABILITY EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT IN NO EVENT SHALL AVAYAS TOTAL LIABILITY TO LICENSEE IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT EXCEED FIVE HUNDRED DOLLARS ($500) THE PARTIES AGREE THAT THE LIMITATIONS SPECIFIED IN THIS SECTION WILL APPLY EVEN IF ANY LIMITED REMEDY PROVIDED IN THIS AGREEMENT IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE 90 INDEMNIFICATION Licensee shall indemnify and hold harmless Avaya its Affiliates and their respective officers directors agents suppliers customers and employees from and against all claims damages losses liabilities costs expenses and fees (including fees of attorneys and other professionals) arising from or relating to Licenseersquos use of the SDK with other software such as operating systems and codecs and the direct or indirect distribution or sale of software Derivative Works or other products (including but not limited to applications interfaces and application programming interfaces) developed utilizing the SDK including but not limited to products liability claims and claims of infringement of third party Intellectual Property rights 100 TERM AND TERMINATION 101 This Agreement will continue through December 31
st of the
current calendar year The Agreement will automatically renew for one (1) year terms and run concurrently with Licenseersquos membership in the Avaya DevConnect Program if applicable unless terminated as specified in Section 102 or 103 below and if applicable provided Licensee is a member of the Avaya DevConnect Program in a good-standing as determined by Avaya at its sole discretion 102 Either party shall have the right to terminate the Agreement upon thirty (30) days written notice to the other party 103 Notwithstanding language to the contrary Avaya may terminate this Agreement immediately upon written notice to Licensee for breach of Section 2 (License Grant) Section 5 (Confidentiality) or Section 12 (Compliance with Laws) Avaya may also terminate this license by giving written notice if a
Change In Control should occur or if Licensee becomes insolvent or voluntary or involuntary proceedings by or against Licensee are instituted in bankruptcy or under any insolvency law or a receiver or custodian is appointed for Licensee or proceedings are instituted by or against Licensee for corporate reorganization or the dissolution of Licensee which proceedings if involuntary have not been dismissed within thirty (30) days after the date of filing or Licensee makes an assignment for the benefit of its creditors or substantially all of the assets of Licensee are seized or attached and not released within sixty (60) days thereafter or if Licensee has ceased or threatened to cease to do business in the regular course 104 Upon termination of this Agreement Licensee will immediately cease using the SDK Development Kit and Licensee agrees to destroy all adaptations or copies of the SDK and Documentation or return them to Avaya upon termination of this License 105 The rights and obligations of the parties contained in Sections 23 26 27 210 211 3 and 5 through 18 shall survive any expiration or termination of this Agreement 110 ASSIGNMENT Avaya may assign all or any part of its rights and obligations hereunder Licensee may not assign this Agreement or any interest or rights granted hereunder to any third party without the prior written consent of Avaya The term assign includes but is not limited to any transaction in which there is a Change In Control or reorganization of Licensee pursuant to a merger sale of assets or stock This Agreement shall terminate immediately upon occurrence of any prohibited assignment 120 COMPLIANCE WITH LAWS Licensee shall comply with all applicable laws and regulations including without limitation those applicable to data privacy intellectual property trade secret fraud music performance rights and the export or re-export of technology and will not export or re-export the SDK or any other technical information provided under this Agreement in any form in violation of the export control laws of the United States of America and of any other applicable country For more information on such export laws and regulations Licensee may refer to the resources provided in the websites maintained by the US Commerce Department the US State Department and the US Office of Foreign Assets Control 130 WAIVER The failure to assert any rights under this Agreement including but not limited to the right to terminate in the event of breach or default will not be deemed to constitute a waiver of the right to enforce each and every provision of this Agreement in accordance with their terms 140 SEVERABILITY If any provision of this Agreement is determined to be unenforceable or invalid this Agreement will not be rendered unenforceable or invalid as a whole and the provision will be changed and interpreted so as to best accomplish the objectives of the original provision within the limits of applicable law 150 GOVERNING LAW AND DISPUTE RESOLUTION This Agreement and any dispute claim or controversy arising out of or relating to this Agreement (Dispute) including without limitation those relating to the formation interpretation breach or termination of this Agreement or any issue regarding whether a Dispute is subject to arbitration under this Agreement will be governed by New York State laws excluding conflict of law principles and the United Nations Convention on Contracts for the International Sale of Goods Any Dispute shall be resolved in accordance with the following provisions The disputing party shall give the other party written notice of the Dispute The parties will attempt in good faith to resolve each Dispute within thirty (30) days or such other longer period as the parties may mutually agree following the delivery of such notice by negotiations between designated representatives of the parties who have dispute resolution authority If a Dispute that arose anywhere other than in the United States or is based upon an alleged breach committed anywhere other than in the United States cannot be settled under these procedures and within these timeframes it will be conclusively determined upon request of either party by a final and binding arbitration proceeding to be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a single arbitrator appointed by the parties or (failing agreement) by an arbitrator appointed by the President
of the International Chamber of Commerce (from time to time) except that if the aggregate claims cross claims and counterclaims by any one party against any or all other parties exceed One Million US Dollars at the time all claims including cross claims and counterclaims are filed the proceeding will be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a panel of three arbitrator(s) appointed in accordance with the Rules of Arbitration of the International Chamber of Commerce The arbitration will be conducted in the English language at a location agreed by the parties or (failing agreement) ordered by the arbitrator(s) The arbitrator(s) will have authority only to award compensatory damages within the scope of the limitations of this Agreement and will not award punitive or exemplary damages The arbitrator(s) will not have the authority to limit expand or otherwise modify the terms of this Agreement The ruling by the arbitrator(s) will be final and binding on the parties and may be entered in any court having jurisdiction over the parties or any of their assets The parties will evenly split the cost of the arbitrator(s) fees but each party will bear its own attorneys fees and other costs associated with the arbitration The parties their representatives other participants and the arbitrator(s) will hold the existence content and results of the arbitration in strict confidence to the fullest extent permitted by law Any disclosure of the existence content and results of the arbitration shall be as limited and narrowed as required to comply with the applicable law By way of illustration if the applicable law mandates the disclosure of the monetary amount of an arbitration award only the underlying opinion or rationale for that award may not be disclosed If a Dispute by one party against the other that arose in the United States or is based upon an alleged breach committed in the United States cannot be settled under the procedures and within the timeframe set forth above then either party may bring an action or proceeding solely in either the Supreme Court of the State of New York New York County or the United States District Court for the Southern District of New York Except as otherwise stated above with regard to arbitration of Disputes that arise anywhere other than in the United States or are based upon an alleged breach committed anywhere other than in the United States each party to this Agreement consents to the exclusive jurisdiction of those courts including their appellate courts for the purpose of all actions and proceedings The parties agree that the arbitration provision in this section may be enforced by injunction or other equitable order and no bond or security of any kind will be required with respect to any such injunction or order Nothing in this section will be construed to preclude either party from seeking provisional remedies including but not limited to temporary restraining orders and preliminary injunctions from any court of competent jurisdiction in order to protect its rights including its rights pending arbitration at any time In addition and notwithstanding the foregoing Avaya shall be entitled to take any necessary legal action at any time including without limitation seeking immediate injunctive relief from a court of competent jurisdiction in order to protect Avayas intellectual property and its confidential or proprietary information (including but not limited to trade secrets) 160 IMPORTEXPORT CONTROL Licensee is advised that the SDK is of US origin and subject to the US Export Administration Regulations (ldquoEARrdquo) The SDK also may be subject to applicable local country importexport laws and regulations Diversion contrary to US andor applicable local country law andor regulation is prohibited Licensee agrees not to directly or indirectly export re-export import download or transmit the SDK to any country end user or for any use that is contrary to applicable US andor local country regulation or statute (including but not limited to those countries embargoed by the US government) Licensee represents that any governmental agency has not issued sanctions against Licensee or otherwise suspended revoked or denied Licensees importexport privileges Licensee agrees not to use or transfer the SDK for any use relating to nuclear chemical or biological weapons or missile technology unless authorized by the US andor any applicable local government by regulation or specific written license Additionally Licensee is advised that the SDK may contain encryption algorithm or source code that may not be exported to government or military
end users without a license issued by the US Bureau of Industry and Security and any other countryrsquos governmental agencies where applicable 170 AGREEMENT IN ENGLISH The parties confirm that it is their wish that the Agreement as well as all other documents relating hereto including all notices have been and shall be drawn up in the English language only Les parties aux preacutesentes confirment leur volonteacute que cette convention de mecircme que tous les documents y compris tout avis qui sy rattachent soient reacutedigeacutes en langue anglaise 180 ENTIRE AGREEMENT This Agreement its exhibits and other agreements or documents referenced herein constitute the full and complete understanding and agreement between the parties and supersede all contemporaneous and prior understandings agreements (excluding the Avaya DevConnect Program Agreement) and representations relating to the subject matter hereof No modifications alterations or amendments shall be effective unless in writing signed by both parties to this Agreement 19 REDISTRIBUTABLE CLIENT FILES The list of SDK client files that can be redistributed if any are in the SDK in a file called Redistributabletxt
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
to the Licensee (d) is required to be disclosed pursuant to a court order so long as Avaya is given adequate notice and the ability to challenge such required disclosure 52 Press Releases Any press release or publication regarding this Agreement is subject to prior review and written approval of Avaya 60 NO WARRANTY The SDK and Documentation are provided ldquoAS-ISrdquo without any warranty whatsoever AVAYA SPECIFICALLY AND EXPRESSLY DISCLAIMS ANY WARRANTIES OR CONDITIONS STATUTORY OR OTHERWISE INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE NONINFRINGEMENT AND SATISFACTORY QUALITY AVAYA DOES NOT WARRANT THAT THE SDK AND DOCUMENTATION ARE SUITABLE FOR LICENSEES USE THAT THE SDK OR DOCUMENTATION ARE WITHOUT DEFECT OR ERROR THAT OPERATION WILL BE UNINTERRUPTED OR THAT DEFECTS WILL BE CORRECTED FURTHER AVAYA MAKES NO WARRANTY REGARDING THE RESULTS OF THE USE OF THE SDK AND DOCUMENTATION NEITHER AVAYA NOR ITS SUPPLIERS MAKE ANY WARRANTY EXPRESS OR IMPLIED THAT SECURITY THREATS AND VULNERABILITIES WILL BE DETECTED OR SOFTWARE WILL RENDER AN END USERrsquoS OR LICENSEErsquoS NETWORK OR PARTICULAR NETWORK ELEMENTS SAFE FROM INTRUSIONS AND OTHER SECURITY BREACHES 70 CONSEQUENTIAL DAMAGES WAIVER EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT AVAYA SHALL NOT BE LIABLE FOR ANY INCIDENTAL INDIRECT SPECIAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT OR USE OF THE SDK OR FOR THE LOSS OR CORRUPTION OF DATA INFORMATION OF ANY KIND BUSINESS PROFITS OR OTHER COMMERCIAL LOSS HOWEVER CAUSED AND WHETHER OR NOT AVAYA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 80 LIMITATION OF LIABILITY EXCEPT FOR PERSONAL INJURY CLAIMS AND WILLFUL MISCONDUCT IN NO EVENT SHALL AVAYAS TOTAL LIABILITY TO LICENSEE IN CONNECTION WITH ARISING OUT OF OR RELATING TO THIS AGREEMENT EXCEED FIVE HUNDRED DOLLARS ($500) THE PARTIES AGREE THAT THE LIMITATIONS SPECIFIED IN THIS SECTION WILL APPLY EVEN IF ANY LIMITED REMEDY PROVIDED IN THIS AGREEMENT IS FOUND TO HAVE FAILED OF ITS ESSENTIAL PURPOSE 90 INDEMNIFICATION Licensee shall indemnify and hold harmless Avaya its Affiliates and their respective officers directors agents suppliers customers and employees from and against all claims damages losses liabilities costs expenses and fees (including fees of attorneys and other professionals) arising from or relating to Licenseersquos use of the SDK with other software such as operating systems and codecs and the direct or indirect distribution or sale of software Derivative Works or other products (including but not limited to applications interfaces and application programming interfaces) developed utilizing the SDK including but not limited to products liability claims and claims of infringement of third party Intellectual Property rights 100 TERM AND TERMINATION 101 This Agreement will continue through December 31
st of the
current calendar year The Agreement will automatically renew for one (1) year terms and run concurrently with Licenseersquos membership in the Avaya DevConnect Program if applicable unless terminated as specified in Section 102 or 103 below and if applicable provided Licensee is a member of the Avaya DevConnect Program in a good-standing as determined by Avaya at its sole discretion 102 Either party shall have the right to terminate the Agreement upon thirty (30) days written notice to the other party 103 Notwithstanding language to the contrary Avaya may terminate this Agreement immediately upon written notice to Licensee for breach of Section 2 (License Grant) Section 5 (Confidentiality) or Section 12 (Compliance with Laws) Avaya may also terminate this license by giving written notice if a
Change In Control should occur or if Licensee becomes insolvent or voluntary or involuntary proceedings by or against Licensee are instituted in bankruptcy or under any insolvency law or a receiver or custodian is appointed for Licensee or proceedings are instituted by or against Licensee for corporate reorganization or the dissolution of Licensee which proceedings if involuntary have not been dismissed within thirty (30) days after the date of filing or Licensee makes an assignment for the benefit of its creditors or substantially all of the assets of Licensee are seized or attached and not released within sixty (60) days thereafter or if Licensee has ceased or threatened to cease to do business in the regular course 104 Upon termination of this Agreement Licensee will immediately cease using the SDK Development Kit and Licensee agrees to destroy all adaptations or copies of the SDK and Documentation or return them to Avaya upon termination of this License 105 The rights and obligations of the parties contained in Sections 23 26 27 210 211 3 and 5 through 18 shall survive any expiration or termination of this Agreement 110 ASSIGNMENT Avaya may assign all or any part of its rights and obligations hereunder Licensee may not assign this Agreement or any interest or rights granted hereunder to any third party without the prior written consent of Avaya The term assign includes but is not limited to any transaction in which there is a Change In Control or reorganization of Licensee pursuant to a merger sale of assets or stock This Agreement shall terminate immediately upon occurrence of any prohibited assignment 120 COMPLIANCE WITH LAWS Licensee shall comply with all applicable laws and regulations including without limitation those applicable to data privacy intellectual property trade secret fraud music performance rights and the export or re-export of technology and will not export or re-export the SDK or any other technical information provided under this Agreement in any form in violation of the export control laws of the United States of America and of any other applicable country For more information on such export laws and regulations Licensee may refer to the resources provided in the websites maintained by the US Commerce Department the US State Department and the US Office of Foreign Assets Control 130 WAIVER The failure to assert any rights under this Agreement including but not limited to the right to terminate in the event of breach or default will not be deemed to constitute a waiver of the right to enforce each and every provision of this Agreement in accordance with their terms 140 SEVERABILITY If any provision of this Agreement is determined to be unenforceable or invalid this Agreement will not be rendered unenforceable or invalid as a whole and the provision will be changed and interpreted so as to best accomplish the objectives of the original provision within the limits of applicable law 150 GOVERNING LAW AND DISPUTE RESOLUTION This Agreement and any dispute claim or controversy arising out of or relating to this Agreement (Dispute) including without limitation those relating to the formation interpretation breach or termination of this Agreement or any issue regarding whether a Dispute is subject to arbitration under this Agreement will be governed by New York State laws excluding conflict of law principles and the United Nations Convention on Contracts for the International Sale of Goods Any Dispute shall be resolved in accordance with the following provisions The disputing party shall give the other party written notice of the Dispute The parties will attempt in good faith to resolve each Dispute within thirty (30) days or such other longer period as the parties may mutually agree following the delivery of such notice by negotiations between designated representatives of the parties who have dispute resolution authority If a Dispute that arose anywhere other than in the United States or is based upon an alleged breach committed anywhere other than in the United States cannot be settled under these procedures and within these timeframes it will be conclusively determined upon request of either party by a final and binding arbitration proceeding to be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a single arbitrator appointed by the parties or (failing agreement) by an arbitrator appointed by the President
of the International Chamber of Commerce (from time to time) except that if the aggregate claims cross claims and counterclaims by any one party against any or all other parties exceed One Million US Dollars at the time all claims including cross claims and counterclaims are filed the proceeding will be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a panel of three arbitrator(s) appointed in accordance with the Rules of Arbitration of the International Chamber of Commerce The arbitration will be conducted in the English language at a location agreed by the parties or (failing agreement) ordered by the arbitrator(s) The arbitrator(s) will have authority only to award compensatory damages within the scope of the limitations of this Agreement and will not award punitive or exemplary damages The arbitrator(s) will not have the authority to limit expand or otherwise modify the terms of this Agreement The ruling by the arbitrator(s) will be final and binding on the parties and may be entered in any court having jurisdiction over the parties or any of their assets The parties will evenly split the cost of the arbitrator(s) fees but each party will bear its own attorneys fees and other costs associated with the arbitration The parties their representatives other participants and the arbitrator(s) will hold the existence content and results of the arbitration in strict confidence to the fullest extent permitted by law Any disclosure of the existence content and results of the arbitration shall be as limited and narrowed as required to comply with the applicable law By way of illustration if the applicable law mandates the disclosure of the monetary amount of an arbitration award only the underlying opinion or rationale for that award may not be disclosed If a Dispute by one party against the other that arose in the United States or is based upon an alleged breach committed in the United States cannot be settled under the procedures and within the timeframe set forth above then either party may bring an action or proceeding solely in either the Supreme Court of the State of New York New York County or the United States District Court for the Southern District of New York Except as otherwise stated above with regard to arbitration of Disputes that arise anywhere other than in the United States or are based upon an alleged breach committed anywhere other than in the United States each party to this Agreement consents to the exclusive jurisdiction of those courts including their appellate courts for the purpose of all actions and proceedings The parties agree that the arbitration provision in this section may be enforced by injunction or other equitable order and no bond or security of any kind will be required with respect to any such injunction or order Nothing in this section will be construed to preclude either party from seeking provisional remedies including but not limited to temporary restraining orders and preliminary injunctions from any court of competent jurisdiction in order to protect its rights including its rights pending arbitration at any time In addition and notwithstanding the foregoing Avaya shall be entitled to take any necessary legal action at any time including without limitation seeking immediate injunctive relief from a court of competent jurisdiction in order to protect Avayas intellectual property and its confidential or proprietary information (including but not limited to trade secrets) 160 IMPORTEXPORT CONTROL Licensee is advised that the SDK is of US origin and subject to the US Export Administration Regulations (ldquoEARrdquo) The SDK also may be subject to applicable local country importexport laws and regulations Diversion contrary to US andor applicable local country law andor regulation is prohibited Licensee agrees not to directly or indirectly export re-export import download or transmit the SDK to any country end user or for any use that is contrary to applicable US andor local country regulation or statute (including but not limited to those countries embargoed by the US government) Licensee represents that any governmental agency has not issued sanctions against Licensee or otherwise suspended revoked or denied Licensees importexport privileges Licensee agrees not to use or transfer the SDK for any use relating to nuclear chemical or biological weapons or missile technology unless authorized by the US andor any applicable local government by regulation or specific written license Additionally Licensee is advised that the SDK may contain encryption algorithm or source code that may not be exported to government or military
end users without a license issued by the US Bureau of Industry and Security and any other countryrsquos governmental agencies where applicable 170 AGREEMENT IN ENGLISH The parties confirm that it is their wish that the Agreement as well as all other documents relating hereto including all notices have been and shall be drawn up in the English language only Les parties aux preacutesentes confirment leur volonteacute que cette convention de mecircme que tous les documents y compris tout avis qui sy rattachent soient reacutedigeacutes en langue anglaise 180 ENTIRE AGREEMENT This Agreement its exhibits and other agreements or documents referenced herein constitute the full and complete understanding and agreement between the parties and supersede all contemporaneous and prior understandings agreements (excluding the Avaya DevConnect Program Agreement) and representations relating to the subject matter hereof No modifications alterations or amendments shall be effective unless in writing signed by both parties to this Agreement 19 REDISTRIBUTABLE CLIENT FILES The list of SDK client files that can be redistributed if any are in the SDK in a file called Redistributabletxt
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
of the International Chamber of Commerce (from time to time) except that if the aggregate claims cross claims and counterclaims by any one party against any or all other parties exceed One Million US Dollars at the time all claims including cross claims and counterclaims are filed the proceeding will be held in accordance with the Rules of Arbitration of the International Chamber of Commerce by a panel of three arbitrator(s) appointed in accordance with the Rules of Arbitration of the International Chamber of Commerce The arbitration will be conducted in the English language at a location agreed by the parties or (failing agreement) ordered by the arbitrator(s) The arbitrator(s) will have authority only to award compensatory damages within the scope of the limitations of this Agreement and will not award punitive or exemplary damages The arbitrator(s) will not have the authority to limit expand or otherwise modify the terms of this Agreement The ruling by the arbitrator(s) will be final and binding on the parties and may be entered in any court having jurisdiction over the parties or any of their assets The parties will evenly split the cost of the arbitrator(s) fees but each party will bear its own attorneys fees and other costs associated with the arbitration The parties their representatives other participants and the arbitrator(s) will hold the existence content and results of the arbitration in strict confidence to the fullest extent permitted by law Any disclosure of the existence content and results of the arbitration shall be as limited and narrowed as required to comply with the applicable law By way of illustration if the applicable law mandates the disclosure of the monetary amount of an arbitration award only the underlying opinion or rationale for that award may not be disclosed If a Dispute by one party against the other that arose in the United States or is based upon an alleged breach committed in the United States cannot be settled under the procedures and within the timeframe set forth above then either party may bring an action or proceeding solely in either the Supreme Court of the State of New York New York County or the United States District Court for the Southern District of New York Except as otherwise stated above with regard to arbitration of Disputes that arise anywhere other than in the United States or are based upon an alleged breach committed anywhere other than in the United States each party to this Agreement consents to the exclusive jurisdiction of those courts including their appellate courts for the purpose of all actions and proceedings The parties agree that the arbitration provision in this section may be enforced by injunction or other equitable order and no bond or security of any kind will be required with respect to any such injunction or order Nothing in this section will be construed to preclude either party from seeking provisional remedies including but not limited to temporary restraining orders and preliminary injunctions from any court of competent jurisdiction in order to protect its rights including its rights pending arbitration at any time In addition and notwithstanding the foregoing Avaya shall be entitled to take any necessary legal action at any time including without limitation seeking immediate injunctive relief from a court of competent jurisdiction in order to protect Avayas intellectual property and its confidential or proprietary information (including but not limited to trade secrets) 160 IMPORTEXPORT CONTROL Licensee is advised that the SDK is of US origin and subject to the US Export Administration Regulations (ldquoEARrdquo) The SDK also may be subject to applicable local country importexport laws and regulations Diversion contrary to US andor applicable local country law andor regulation is prohibited Licensee agrees not to directly or indirectly export re-export import download or transmit the SDK to any country end user or for any use that is contrary to applicable US andor local country regulation or statute (including but not limited to those countries embargoed by the US government) Licensee represents that any governmental agency has not issued sanctions against Licensee or otherwise suspended revoked or denied Licensees importexport privileges Licensee agrees not to use or transfer the SDK for any use relating to nuclear chemical or biological weapons or missile technology unless authorized by the US andor any applicable local government by regulation or specific written license Additionally Licensee is advised that the SDK may contain encryption algorithm or source code that may not be exported to government or military
end users without a license issued by the US Bureau of Industry and Security and any other countryrsquos governmental agencies where applicable 170 AGREEMENT IN ENGLISH The parties confirm that it is their wish that the Agreement as well as all other documents relating hereto including all notices have been and shall be drawn up in the English language only Les parties aux preacutesentes confirment leur volonteacute que cette convention de mecircme que tous les documents y compris tout avis qui sy rattachent soient reacutedigeacutes en langue anglaise 180 ENTIRE AGREEMENT This Agreement its exhibits and other agreements or documents referenced herein constitute the full and complete understanding and agreement between the parties and supersede all contemporaneous and prior understandings agreements (excluding the Avaya DevConnect Program Agreement) and representations relating to the subject matter hereof No modifications alterations or amendments shall be effective unless in writing signed by both parties to this Agreement 19 REDISTRIBUTABLE CLIENT FILES The list of SDK client files that can be redistributed if any are in the SDK in a file called Redistributabletxt
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Table of Contents
Table of Figures 8 1 About this document 9
11 Scope of the document 9 12 Intended audience 10 13 Conventions used in the document 10 14 Related documents 10 15 Providing documentation feedback 10 16 Historical View 10
2 Architecture Overview 11 3 POM and Recorder Application Integration Design 14
31 Getting started 14 311 InstallUpgrade POM 14 312 Configure Communication Manager and Application Enablement Services 14 313 Configure POM 15
32 Connecting POM and Recorder Application 17 321 POM deployment with recorder 17 322 TCP based connection 18 323 TLS based secured connection 19 324 Verify connection between POM and Recorder 21 325 Link failure and recovery 22
33 Recording per Zone 22 34 Failure and Recovery 25
341 POM Server Failure 25 342 Recorder application failure 26
35 High Availability 27 351 POM server failover 27 352 Zone failover 29
36 Licensing 30 4 POM Recording Events 31
41 Recorder login and listing agents 31 411 LoginRequest Event 32 412 LoginResponse Event 33 413 ListAgentsRequest Event 33 414 ListAgentsResponse Event 34 415 Logout 34
42 Agent states and associated recording events 35 421 AgentAcquire Event 35 422 AgentRelease Event 35 423 MediaInfo Event 36 424 MediaComplete Event 37
5 POM Call Scenarios 38 51 Scenario Agent working on call 38 52 Scenario Agent holds while working on call 40 53 Scenario Agent consulttransfer while working on call 43 54 Scenario Agent consultconference while working on call 47
6 Sample Client 52 7 Limitations 52 Appendix A ndash Glossary 53 Appendix B ndash Content out of scope 54 Appendix C ndash Troubleshooting 54
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Table of Figures Figure 1 Solution architecture view of POM with CC-Elite 11 Figure 2 Solution architecture view of POM with AACC 12 Figure 3 POM nailing request ndash call flow 13 Figure 4 POM dialing customer ndash call flow 13 Figure 5 POM agent talking to customer ndash call flow 14 Figure 6 Global configuration 15 Figure 7 Enable recorder 15 Figure 8 Edit NailerDriver application 16 Figure 9 Generate UCID settings 16 Figure 10 Single POM and recorder application deployment view 17 Figure 11 Multiple POM and recorder application deployment view 18 Figure 12 Connection sequence between POM and recorder application 19 Figure 13 Enable secured connection with recorder 20 Figure 14 POM certificate export option 20 Figure 15 Successful TCP connection established between POM and Recorder 21 Figure 16 Successful TLS connection established between POM and Recorder 21 Figure 17 Multiple POM zonal deployment with recorder 23 Figure 18 All zone configuration 24 Figure 19 Comma separated zone configuration 24 Figure 20 Recording events for configured zones 24 Figure 21 POM server failure 25 Figure 22 Recorder application failure 26 Figure 23 Primary and Aux POM servers connected with recorder 27 Figure 24 Failover of POM server managing zone 28 Figure 25 Zone failover 30 Figure 26 Sequence to receive events with registered agent details 31 Figure 27 Sequence to receive events and request for registered agent details 32 Figure 28 LoginRequest XML message 33 Figure 29 LoginResponse XML message 33 Figure 30 ListAgentsRequest XML message 34 Figure 31 ListAgentsResponse XML message 34 Figure 32 AgentAcquireEvent XML message 35 Figure 33 AgentReleaseEvent XML message 36 Figure 34 MediaInfoEvent XML message 37 Figure 35 MediaCompleteEvent XML message 38 Figure 36 Scenario Agent working on call 39 Figure 37 Scenario Agent puts customer on hold 41 Figure 38 Scenario Agent consults with other agent 44 Figure 39 Scenario Agent conferencing other agent 48
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
1 About this document This chapter describes
Scope of the document
Intended audience
Conventions used in the document
Related documents
Providing documentation feedback
Historical view
11 Scope of the document This document gives details of design and APIs provided by Proactive Outreach Manager (POM) for integration with any third party voice call recorder Proactive Outreach Manager is an outbound dialer and provides agent based as well as agent less dialing as one of its key feature Please note prior to POM 304 only Avaya Recorder was supported for call recording in POM 301 In POM 304 and above support is added for third-party call recording solutions Note Recording feature available in POM 30 allows the recording application to connect with POM over a TCP connection whereas the POM 304 enhances this by providing TLS based connection apart from the support for TCP to be backward compatible This document covers solution architecture and key concepts of POM integration design of POM and recorder the recording events various call scenarios and troubleshooting techniques as part of below chapters
Chapter 2 Architecture Overview - introduces the solution deployment architecture for general awareness of POM concepts and prerequisites for agent based dialing operations
Chapter 3 POM and Recorder Application Integration Design ndash details the design of the POM components interacting with the recording application elaborating the logical sequence of basic call flow and recording activities It also covers the multi-server deployment failover scenarios and zoning with respect to integration of POM with any recording application
Chapter 4 POM Recording Events - details all possible recording events in the form of APIs provided by POM
Chapter 5 POM Call Scenarios - covers various agent based call scenarios and the unlined sequence of messages
Chapter 6 Sample Client ndash explains the sample client code for the recording application developersintegrators
Chapter 7 Limitations and Caveats ndash describes potential enhancements in POM recorder integration design
Note This document does not cover administration and configuration details of aura products Avaya Auratrade Communication Manager Avaya Auratrade Enablement Services Avaya Contact Recorder These documents are called out in the related documents chapter
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
12 Intended audience This document is developed for deployment engineers and recording application developers in order to enable them in integrating recorder application with Proactive Outreach Manager The audience of this document is expected to know
Java
XML
Proactive Outreach Manager Solution overview
Avaya Aura components like Application Enablement Service Communication Manager Session Manager and System Manager
13 Conventions used in the document The following fonts are used in this document
To represent This font is used
Document Name Document Name(ex Using POM)
Linux commands Command (ex sbinservice POM restart)
Java Code javanetSocket
Note Note
Event NamesXml Event name (ex LoginRequest)
14 Related documents Document Description
CM Admin Guide Administering Avaya Aurareg Communication Manager
SM Admin Guide Administering Avaya Aurareg Session Manager
EPMPP Admin Guide Administering Avaya Aurareg Experience Portal
AES Admin Guide Administering and Maintaining Avaya Aurareg Application Enablement Services
Guide on DMCC Avaya Aurareg Application Enablement Services
ACR Admin Guide Avaya Contact Recorder Release 151 Planning Installation and Administration Guide
POM design and product documents Using Proactive Outreach Manager
15 Providing documentation feedback Let us know what you like or do not like about this document Although we cannot respond personally to all your feedback we promise we read each response we receive Please email feedback to documentavayacom
16 Historical View POM Release Support Purpose
301 TCP based integration with Minimum version of
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Avaya Contact Recorder (ACR)
POM required for POM-Recorder integration is 301
Integration supported with ACR only
Integration between POM and ACR is based on TCP protocol
304 and above TLS based integration with third party recorder
Enhanced to support TLS based integration with third party recorder
Supports backward compatibility for TCP based integration with ACR
2 Architecture Overview This section describes the solution architecture of POM highlighting the adjunct products required for POM It also covers the basic concepts of POM used in the context of call recording functionality There are two deployment scenarios one with Avaya Contact Center Elite (CCElite) and another with Avaya Aura Contact Center (AACC) Following diagram gives the architectural view of POM with CCElite and ACR as the call recorder highlighting the adjuncts required for POM to function
Figure 1 Solution architecture view of POM with CC-Elite
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Below diagram gives the architectural view of POM with AACC and ACR as the recorder highlighting the adjuncts required for POM to function
Figure 2 Solution architecture view of POM with AACC
As depicted in the above 2 diagrams POM is deployed as a managed application on Experience Portal as the platform As for the adjuncts POM needs Media Processing Platform (MPP) Session Manager (SM) Communication Manager (CM) Application Enablement Service (AES) products to provide an outbound dialer solution along with recording As shown above POM leverages the platform features and web services to perform the outbound operations For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP which in turn sends SIP invite to SM all the way to CM Also POM fetches the agent login and skill details using the AES SMS web service POM interacts with CMS via socket and uses rt_socket package to receive the skill feeds of the agents whose skills are configured and monitored in POM for blending operation POM interacts with ACR (sample recording application in the above diagram) over socket connection to send any recording events and ACR uses Device Media Call Control (DMCC) service of AES to trigger the call recording ACR receives the media stream from the media gateway (be it the Avaya Media server (AMS) or a G series gateway) registered with the CM For details please refer to material listed in Reference Material section for administration and provisioning documentation for these products For ease of understanding an agent based outbound call flow - explaining basic POM concepts in context of recording is explained below In order to work on any agent based outbound call POM first registers the agent also referred to as lsquonail the agentrsquo The agent nailing flow is depicted below
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Figure 3 POM nailing request ndash call flow
The POM Nailer application is a CCXML application shipped as one of the POM suite of applications using for running outbound call campaigns Nailer is responsible for placing the call to an agent prior to running an agent based campaign Nailing refers to keeping an agent connection alive during multiple outbound calls during the outbound calling campaign The call is initiated using a SIP INVITE sent by MPP to CM which results in RTP established between the MPP and the CM (or more specifically the gateway registered with CM) Once the agent is nailed to call from POM POM utilizes this agent for working on customer calls There are 3 types of agent based calls in POM namely preview predictive and progressive In preview the agent is first connected by POM and then the customer information is provided to the agent by POM and agent chooses to dial the customer Whereas in progressive and predictive the customer is first connecteddialed by POM and once connected POM identifies the best suitable agent to talk to the customer using skills based routing Call flows explaining the customer call connect and patching the agent with the customer is depicted below
Figure 4 POM dialing customer ndash call flow
POM requests the platform to send INVITE to the customer and create the customerrsquos call leg Now the customer and the agent leg are connected as a conference on the MPP hosting the agent POM uses INVITE with REPLACE to achieve this
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Figure 5 POM agent talking to customer ndash call flow
Every call between the customer and a nailed agent is a conference on the MPP POMrsquos nailer app requests EP to initiate an INVITE wt REPLACE as soon as it finds best agent to work on the customer call Thus conceptually recording a call is adding the recorder application as one of the participants to the conference created between a customer and a nailed agent however the physical implementation of this is not via a conference on the MPP but rather using the DMCC protocol available on CM Thus a conference is formed on communication manager between the customer the call from the MPP which is connected to the agent via CM and the call recorder via a DMCC station that was registered by AE Services to Communication Manager Once an agent is done with working on a call heshe can wrap-up the call and enter the dispositioncompletion details of the call Note that the inter-working of DMCC is out of scope of this document please refer Related Documents section This section covered in nutshell the basic concepts of POM nailing agentcustomer connections and previewprogressivepredictive dialing and wrap-up in context of agent based outbound operations
3 POM and Recorder Application Integration Design
31 Getting started This section covers the pre-requisites for any recorder application to integrate and receive call related events from POM for the purpose of call recording
311 InstallUpgrade POM First things first installupgrade to latest POM version Please refer Implementing POM and Using POM product documents available on supportavayacom
312 Configure Communication Manager and Application Enablement Services
Configure Communication Manager and Application Enablement Services as explained in reference document Application Notes to Integrate Avaya Contact Recorder 120 with Avaya Proactive Outreach Manager 30 using Avaya Aurareg Application Enablement Services 63 ndash Issue 11 available on Dev connect
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
313 Configure POM Configure Proactive Outreach Manager as shown below
3131 Enable recorder integration Step 1 On the POM Web Page ndash Go to POM Home Configurations menu Global Configurations sub menu as shown below
Figure 6 Global configuration
Step 2 On global configurations page go to Recorder section and select enable recorder as shown below
Figure 7 Enable recorder
Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection as shown above Please refer Using POM guide section Manage global configuration page field descriptions for more details on enabling recorder
3132 Enable UCID generation For any telephony operations initiated by POM EP launches the telephony apps driver and nailer ccxml via MPP Refer Architecture Overview chapter for more details The configuration explained below is required for POM applications to provide the Universal Call Identifier (UCID) in the form of metadata recording APIs Step 1 On Experience Portalrsquos web page https[IP of Experience Portal]VoicePortal go to System Configuration Applications Nailer as shown below
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Figure 8 Edit NailerDriver application
Step 2 Edit both Nailer and Driver application Go to Advanced parameters set the Generate UCID to Yes
Figure 9 Generate UCID settings
The Universal Call Identifier (UCID) is a call identifier used to help correlate call records between different systems If the Avaya Communication Manager (CM) passes a UCID to Experience Portal Experience Portal always uses that UCID regardless of the setting in this field If however CM does not pass a UCID the Experience Portal MPP server can generate one for the call
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Please refer to the Experience Portal online help and administration guide for more details on UCID for inbound and outbound calls Upon successful configuration restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service
32 Connecting POM and Recorder Application
321 POM deployment with recorder This section covers the deployment details of POM with any recorder application
Figure 10 Single POM and recorder application deployment view
The above figure depicts holistic view of the solution in deployment with connection between single POM server and recorder Agents once logged in to CM are required to login to POM via desktop in order to perform any outreach operations via POM POM provides the details of agent operations in the form of XML based recording events to the recorder application Details of connecting with POM are covered in subsequent sections Note POM provides recording events to the recorder application only upon a successful connect and detection of live voicevoice energy (answer human detection) between agent and the customer Note As depicted in the figure 10 above POM does not perform the streaming of media rather it provides agent events in the form of XML messages over a TCPTLS based socket connection
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
For multi POM server deployment integration with recorder it is required that the recorder shall establish connection with each individual POM server upfront such that events are being sent from all servers as per the recorder configuration Figure 11 below depicts the POM multi-server deployment with recorder
Figure 11 Multiple POM and recorder application deployment view
322 TCP based connection Below diagram describes the sequence of steps required to establish connection between POM and recorder application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Figure 12 Connection sequence between POM and recorder application
The Recorder application must connect with POM over a TCP socket connection To facilitate recording application connections POM opens a ServerSocket on the configured port (default port
is 7999) and waits for connection requests from recording applications to arrive Once a request has been received a TCP based socket connection is established between the POM server and the recording application Upon successful socket creation the recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity
library followed by a sending a LoginResponse Details of login request and response message format are available in POM Recording Events chapter All the recording events between POM and the recording application flow over this socket connection in the form of XML messages Please refer the Getting started chapter for pre-requisites to connect POM and Recorder application Please refer the Sample Client chapter for details on sample client to connect with recorder Note It is required that the recorder establish a connection with each individual POM server in a multi POM server deployment
323 TLS based secured connection TLS based connection can be used for a secured connection between POM and recording application In order to enable this type of connection
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Step 1 Login to Experience portal web page https[IP of Experience Portal]VoicePortal Configure Enable Secured Connection on POM Home Global Configurations page as shown below
Figure 13 Enable secured connection with recorder
Step 2 Export the POM server certificate (see below) Please refer Using POM guide section Enabling secured connection with Recorder for more details The handshake between the POM server and recording application is one way handshake and POM utilizes the server certificate for this handshake POM does not accept any certificate from the recording application for this handshake The POM server certificate can be exported from POM Home Configurations POM Servers page as shown below
Figure 14 POM certificate export option
Update the trust store of the recording client with the exported certificate for establishing a secure connection between POM and recorder application In case of multiple server deployment of recording application all deployed application instances should contain the exported certificate in their respective trusted store Similarly in case of multiple POM server deployment the server certificate of every POM server shall be copied to the trust store of every recording application Step 3 Restart POM services Upon successful configuration and certificate export restart POM service Go to POM Home Configurations POM Servers POM Manager Select the server and stop start the service Step 4 Socket connection
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
On a successful handshake a socket connection is established on configured port [7998 default port] The recording application should send login request to the POM server with required metadata in the form of LoginRequest XML message POM in response authenticates and authorizes the recording application using the Experience Portalrsquos EPSecurity library followed by a
LoginResponse event Note It is required that the recorder establish connection with each individual POM server in a multi POM server deployment Note WFO-ACR 151 or lower does not support TLS based secured connection Hence for supporting backward compatibility POM 304 leaves the option with the user to enable secured connection
324 Verify connection between POM and Recorder To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7999 command
Verify ESTABLISHED status on the configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example output for port 7999 is shown below
Figure 15 Successful TCP connection established between POM and Recorder
To verify a TLS connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command with configured port netstat ndashna | grep 7998 command
Verify ESTABLISHED status on configured port with the configured POM IP address Note that the line that has ESTABLISHED at the rightmost end shows a connection between POM at 14814717389 on port 7999 and a recording application (client) at 148147173172 on port 51633 Example for 7998 shown below
Figure 16 Successful TLS connection established between POM and Recorder
If the connection is established successfully and if the recording application has sent the
LoginRequest event to POM the recorder as a verification step should receive the LoginResponse event To troubleshoot please visit Experience Portal web page System Maintenance Log Viewer Select category lsquoPOM Agent Managerrsquo and check for any Errors in the log report In case of TLS handshake failure POM raises alarm P_POMAGT56 to notify the administrator of the failure event Please visit Experience Portal web page System Maintenance Alarm Manager and check for P_POMAGT56 alarm in the alarm report There is no upper limit defined to the number of recorder client connections to the POM server
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
325 Link failure and recovery Link failure between POM and Recorder application might occur due to many reasons for example
POM service unavailabilityfailure
Recorder application failure
Network failure In case of POM service failure or shutdown any connection request from a recorder application will be rejected and the recorder application would receive javanetConnectException Connection refused
exception The recorder application in such scenario is expected to continue to send connection requests on the configured ports periodically Upon successful restart of the POM service any new requests from the recorder application would be accepted The recording application should follow up establishment of a connection by sending a login request In case of recorder application failure the established socket connection with POM would break POM will continue to listen on the configured port and upon receipt of any new connection requests it will accept the request and proceed with the required authentication process POM being the server the recorder application or client is expected to re-initiate the connection on configured port upon recovery from the failure In case of network failure the recorder would be informed about the socket failure only upon sending any new information over the socket by the TCP stack at the recorder POM will continue to listen on the configured port upon network availability and upon receipt of any new connection requests it will accept the same and proceed with the required authentication process The recorder application or client is expected to attempt to re-establish the connection on the configured port on a periodic interval in case of network failure Please refer Troubleshooting chapter for more details on POM service failure
33 Recording per Zone POM leverages on the Experience Portalrsquos concept of Zones enabling users to make optimum usage of resources deployed and create segmentation of administration for different organizations in the datacenter Note POM as of current design supports single datacenter deployment design All figures in this chapter depict single datacenter deployment The figure 17 below depicts solution view with zonal deployment of POM
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Figure 17 Multiple POM zonal deployment with recorder
As shown above primary EP with POM is deployed in Zone A along with Auxiliary EP with POM in Zone B As per POM design an Agent Manager service (referred as PAM) can manage multiple zones as configured by the user The PAM service manages those agents who are logged in to the zone managed by the service and provides recording events to the connected recording client Hence as depicted above the recording application is connected to both primary and auxiliary POM in order to receive events for agent operations performed in both zones A and B via the PAM service running in both POM servers For more details on primary and auxiliary EP deployment please refer Proactive Outreach Manager Implementation guide available on support site For more details on POM zone configuration please refer Using Proactive Outreach Manager guide available on support site In order for the recording application to receive events for a particular zone it must send the required zone(s) information in the LoginRequest xml message A snippet of LoginRequest is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Figure 18 All zone configuration Please note the zone element of the xml message above A recording application can provide either lsquoAllrsquo zones or the lsquocomma separatedrsquo zones When lsquoAllrsquo zones is sent in the login request to POM POM ensures to send agent operations of all the zone(s) managed by the PAM service running on the POM server to which the recording application is connected For example if POM server to which the recorder is connected is managing Zone A recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoAllrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application Another example for comma separated zones for Zone A and B is shown below
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtABltzonegt ltLoginRequestgt
Figure 19 Comma separated zone configuration When lsquoABrsquo zones is sent in the login request to POM POM ensures to send recording events of only those zones which are managed by the PAM service and also configured in the login request message For example if POM server to which the recorder is connected is managing Zone A and the login request contains lsquoABrsquo zone then recording events of operations performed by the agents logged in to Zone A will be sent to the recorder application and not for the Zone B since PAM service is managing only Zone A Whereas if POM server to which the recorder is connected is managing both Zone A and Zone B and if lsquoABrsquo zone is sent in login request then recording events of operations performed by the agents logged in to Zone A and Zone B will be sent to the recorder application since PAM service is managing both Zone A and B Below table depicts the conditions
Zone in LoginRequest Zone managed by PAM Recording event of which zone will be sent
All A A
All AB AB
A A A
B A None
AB B B
AB C None
Figure 20 Recording events for configured zones In summary as long as the zone configured in login request in managed by the PAM service the recording events of the configured zone would be sent to the recorder Note Above described multi-zone recording feature is available with POM 301 patch 8 release As described above in a multiple POM server deployment it is expected that the recording application should connect to all POM servers to ensure recording events from all POM servers managing respective zones are received by the recorder
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Note Best practice is to establish connection with each POM server in a multiple POM server deployment and configure lsquoAllrsquo zone in LoginRequest message Details of the LoginRequest event message are available in POM Recording Events chapter
34 Failure and Recovery This section covers the POM server failure recovery and associated impact on recording events in a single POM server deployment
341 POM Server Failure In the event of POM server failure or POM Agent Manager (PAM) service failure no new connection between POM and recording application can be established In case of already established connection the connectivity between the recording application and POM server terminates Figure 21 below depicts the POM server failure
Figure 21 POM server failure
In a single POM server deployment as shown above when the POM server or connectivity to the server fails no agent operations can be performed by the agents logged in to POM In such case the agents registered with POM get lsquoPOM not availablersquo message on their desktop and are restricted from performing any operations until POM becomes available In such event no recording events are sent to the recording application Any new messages sent by recording application to POM will fail due to the broken connection
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application
Please note as of current POM design the recording application is not informed about POM health status in the form of any kind of keep-alive messages Hence it is expected that the recording application should re-initiate the connection with POM server upon connection failure for further communication When POM or PAM service recovers from failure any new connection requests by the recording application are accepted and the sequence follows as explained in chapter Connecting POM and Recording application Recording application can get the current state of all logged in agents using ListAgentsRequest command Note Upon recovery the application may use the ListAgentsRequest request to get the current state of all logged in agents In return POM sends only the current state of logged in agents on request and would not send details of all the operations or transitions happened during the down time of POM server or PAM service Multi server POM deployment and failover is covered in chapter High Availability
342 Recorder application failure In the event of recording application failure none of the POM agent operations get impacted whereas the connection between POM and recording application breaks Thus the recording application canrsquot receive any recording events unless the application recovers from failure and re-establishes the connection to POM and re-initializes Figure 22 below depicts the recording application failure
Figure 22 Recorder application failure
Once the recording application recovers from failure it should re-initiate the connection such that POM server accepts the connection the application logs in and POM begins sending recording events Note Upon recovery of recording application POM sends recording events for ongoing agent operations over a newly established connection POM will not send details of all the operations or transitions during the down time of the recording application
35 High Availability This section covers the POM server failure recovery and associated impact on recording events in multiple POM server deployment
351 POM server failover The figure 23 below depicts multiple POM server deployment with zones Zone A consists of Primary and Auxiliary POM deployed on EP The agent POM manager service (PAM) running on Primary POM server manages zone A and is active Whereas the PAM service in Auxiliary POM of Zone A is dormant Another Auxiliary POM is deployed in Zone B and the PAM service running on this POM is active managing Zone B
Figure 23 Primary and Aux POM servers connected with recorder
Note As per POM design a PAM service can manage multiple zones where as one zone cannot be managed by multiple PAM services
In the event of POM server or PAM service failure in either Zone A or B the dormant server deployed in Zone A will take over the operations being performed by the failed service automatically The figure 24 below depicts the failover of POM server
Figure 24 Failover of POM server managing zone
In the event of POM server or PAM service failure the agents logged in to zone A which are served by the failed POM server receive lsquoPOM Not Availablersquo message on the Agent desktop and are not allowed to perform any operation from desktop The dormant server takes ownership of the zone(s) being managed by the failed server such that the campaign and agent operations served by the failed server resume from the last failure point Once the dormant server becomes operational it sends lsquoPOM Availablersquo message to the agents on the desktop such that the agents are allowed to perform respective operations This is an automated failover and no manual intervention is required during this event A dormant server is not associated with any zone and can take over the operations of failed PAM service responsible for any zone Thus the above behavior would remain the same as explained above when the POM server or PAM service of Zone B fails instead of POM server of Zone A High availability design for PAM supports node to node failover If multiple nodesservers fail then for high availability of all nodes an equivalent number of dormant servers are required For more details on high availability and system behavior please refer POMrsquos product documentation
During failure the connection established between POM server and the recording application breaks Any new messages sent by recording application to POM will fail due to broken connection As shown in the figure 24 above it is expected that the recording application establishes connection with all the POM servers deployed in a multiple POM server deployment When the dormant server or PAM service becomes operational it starts sending the recording events of agents managed by the operational PAM service As explained above during the failover agents receive lsquoPOM Not Availablersquo message and canrsquot perform any desktop operations unless the lsquoPOM Availablersquo message is received Thus the recording application receives all the recording events related to actions performed by the agent post receipt of lsquoPOM Availablersquo message on the desktop via the connection established with the dormant server Note As a best practice the recording application should be designed such that recording events for the requested zone can be received via connection established with any POM server in a multi POM server deployment It is also suggested to configure lsquoAllrsquo zones instead of comma separated zones in LoginRequest message unless particular recording application instance does not want to receive recording events of specific zone
352 Zone failover In the event of zone failure as shown in figure 25 below all the components residing in the zone become unavailable In such scenario the connectivity of recording application with all POM servers supporting agents in the failed zone terminates As shown below the recording application is connected with all POM servers such that in the event of zone A failure the connection between POM deployed in zone B and recording application remains intact
Figure 25 Zone failover
In order to ensure the operations performed by the failed zone are continued from other zone manual intervention is required to mark the failed zone down such that the configured failover zone claims ownership of the campaigns and agent operations being performed from the failed zone For more details on zone failover and system behavior please refer POM product documentation In the event of zone failure the agents served by the failed zone canrsquot perform any operations from the desktop The agents of failed zone need to manually re-login to zone B as shown above such that PAM of zone B can provide the recording events of agent operations to the recording application over the existing connection For example if zone fails during an ongoing call the ongoing call will get terminated and the recording application will stop receiving events from PAM in the failed zone The recording application shall monitor for socket connection termination Again as a best practice recording application should establish connection with every POM recorder in a multi POM server deployment such that in the event of failure recording events will flow via the intact connection for un-affected zone
36 Licensing This API does not consume a license and is an entitlement associated with a valid POM license The recording API is packaged as part of POM libraries and its version is same as the POM release version For more details on POM licensing please refer product Overview and Specification document chapter Licensing requirements and product offer document
License needs for recording application is out of the scope of this document
4 POM Recording Events
41 Recorder login and listing agents For a recorder application to receive events the recording application must 1
st establish a
connection with POM server followed by sending a request for login and upon a successful login response from POM the recording application can request for list of registered agents with details The below figure depicts the sequence elaborated above
Figure 26 Sequence to receive events with registered agent details
As shown above POM opens a server socket connection and listens for any new connection from the recording client Once a socket connection is established between POM and the
recording application recorder should send login request using event LoginRequest The recording application can get the registered agent details from POM by sending a LoginRequest and including the pumpup attribute value set to true in the LoginRequest event The
registered agents are the agents logged-in to POM When a LoginRequest is received and PumpUp set to true POM server sends LoginResponse followed by the ListAgentsResponse event containing
registered agent details Details of LoginRequest event are listed in a subsequent section The below diagram depicts the sequence where recording application connects with the POM server gets successfully logged in followed by a request for fetching registered agents with respective states as a new request
Figure 27 Sequence to receive events and request for registered agent details
In order to obtain the list of registered agents either a login request with pumpup attribute value set to true or a listagentsrequest shall be sent by the recording application to POM
Note In the event of the recorder applicationrsquos loginRequest failing POM sends LoginResponse with failure reason and closes the established socket connection Details of LoginResponse are listed in LoginResponse sections
Please note all event XML messages are prefixed with nnnnnn which represents length of the XML message as 6 digit byte array in the form of string The recording application can confirm the receipt of data sent by POM over the socket connection by comparing the size of data received
over socket with the value of nnnnnn
411 LoginRequest Event
Event Name ndash LoginRequest Purpose ndash Purpose of this event is to authenticate and authorize recorder application in
order to start receiving recording events
Pre-requisite ndash Successfully established socket connection
Definition ndash The message details are shown below
Attribute Type Description
user String User name ltPOM web-administrator login namegt
password String Password ltPOM web-administrator passwordgt
zone String Optional If successfully logged in receive events of agent operations performed by this zone Valid values lsquocomma separated zone namesrsquo lsquoAllrsquo Default value lsquoAllrsquo
pumpup String Accepts value lsquotruersquo or lsquofalsersquo
When set to lsquotruersquo POM sends ListAgentsResponse followed by the LoginResponse to the recording application upon successful login
When set to false POM only sends the LoginResponse and in order to receive details of registered agents the recording application must
use ListAgentsReqest event
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginRequest pumpup=truegt
ltusergtadminltusergt ltpasswordgtadmin123ltpasswordgt
ltzonegtAllltzonegt ltLoginRequestgt
Figure 28 LoginRequest XML message
412 LoginResponse Event
Event Name ndash LoginResponse
Purpose ndash Purpose of this event is to respond to a login request sent by a recording application
Pre-requisite ndash Successfully established socket connection and recorder application has
sent LoginRequest to POM server
Definition ndash The message details are shown below
Attribute Type Description
reasonCode Integer Reason code returned from LoginRequest reasonCode reasonText
0 Login Successful
1 Invalid user name or password
2 Invalid zone
3 General error
reasonText String Reason description returned from LoginRequest success String Set to lsquotruersquo when reasonCode is lsquo0rsquo else set to lsquofalsersquo
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltLoginResponse success=true reasonCode=0gt
ltreasonTextgtLogin SuccessfulltreasonTextgt ltLoginResponsegt
Figure 29 LoginResponse XML message
413 ListAgentsRequest Event
Event Name ndash ListAgentsRequest Purpose ndash Purpose of this event is to get a list of all agents registered and managed by
zone(s) specified in the loginRequest message associated with the socket connection over which the message is received
Pre-requisite ndash Successfully established socket connection and successfully logged in to POM server
Definition ndash The message details are shown below Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsRequestgt
Figure 30 ListAgentsRequest XML message
414 ListAgentsResponse Event
Event Name ndash ListAgentsResponse
Purpose ndash Purpose of this event is to provide a list of all agents registered and managed by zone(s) active on the POM server with which the socket connection has been
established POM sends this response upon receipt of ListAgentsRequest event and upon receipt of LoginRequest with pumpup attribute value set to true
Pre-requisite ndash Successfully established socket connection successfully logged in to
POM server and either pumpup attribute value set to true in LoginRequest message OR POM has received a ListAgentsRequest event from recording application
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID as provisioned on Communication Manager and agent desktop (Maximum 80 characters)
agentExtn String Extension used by the agent to login from (Maximum 80 characters)
State String Current state of the agent Valid values
Ready When the agent is nailed and ready on desktop
Active When the agent is nailed and busytalkingin consultin conference
Hold When the agent puts customer call on hold
Xml Message
nnnnnnltxml version=10 encoding=UTF-8gt ltListAgentsResponsegt
ltagentsgt ltagent agentID=1234 agentExtn=3456 state=activegt
ltagent agentID=2134 agentExtn=3432 state=holdgt ltagent agentID=5324 agentExtn=2334 state=readygt ltagentsgt
ltListAgentsResponsegt
Figure 31 ListAgentsResponse XML message
415 Logout There is no API for logout request from the recording application post a successful login The socket connection between POM and Recording client is terminated when the socket connection is closed There is no separate API message to disconnect the session If an agent logs out of POM recording applications monitoring the zone that the agent was logged into are notified through the AgentRelease event
42 Agent states and associated recording events As explained in the Architecture Overview chapter an agent is nailed upon the need for an agent for an agent based campaign Once nailing is successful the agent is attached to particular campaignjob and based on the dialing mode (previewpredictiveprogressive) the agent moves between various call states like preview dialing talking and wrap-up Note As mentioned earlier in this document only those events which occur post successful connect and answer human detection between the agent and customer are sent to the recorder Other events like dialing wrap-up played notification and any others are not currently available in the current POM design For more details on agents states please refer POM Overview and Specification document Table below details the agent operations and associated recording event sent by POM server
Agent Operation Recording Event
Nailing an agent AgentAcquireEvent
Releasing nailed agent AgentReleaseEvent
Media established with participant on call MediaInfoEvent
Media complete with participant on call MediaCompleteEvent
421 AgentAcquire Event
Event Name ndash AgentAcquireEvent Purpose ndash Purpose of this event is to notify the recording application when agent is
nailed by POM
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentname String Name of the agent
agentExtn String Extension of the agent
Meta data as name value pairs (optional)
String Meta data
jobid=123
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3425 agentname=name agentExtn=sip3425pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
Figure 32 AgentAcquireEvent XML message
422 AgentRelease Event
Event Name ndash AgentReleaseEvent
Purpose ndash Purpose of this event is to notify the recording application when agent is released from POM Agent can get released due to various reasons like campaignjob the agent was working on has been completed or agent logs off from desktop upon setting not ready state Please refer POM Agent API document for more details on various agent states and transitions
Pre-requisite ndash Successfully established socket connection successful login recording application is monitoring the zone that the agent is logged into
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
agentname String Name of the agent
XML Message
nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3425 agentExtn=sip3425pomcom agentname=namegt ltAgentReleaseEventgt
Figure 33 AgentReleaseEvent XML message
423 MediaInfo Event
Event Name ndash MediaInfoEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
is established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone ie when agent is in talking state With every participant added to the established RTP or telephony leg a new MediaInfoEvent message is sent to the recording application For details on how POM connects between agent and customer please refer chapter Architecture Overview Various scenarios with MediaInfoEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login and agent is acquirednailed
Definition ndash The message details are shown below
Attribute Type Description
agentID String Agent ID
agentExtn String Extension of the agent
workitem id String Workitem id value is unique per successful connect between agent and the customer it represents outbound call attempt worked upon by the agent
UCID String Unique identifier assigned by the system for a call Please refer section Enable UCID generation for details on UCID
mediaType String Type of campaign Valid values are
Progressive
Preview
Participantsparticipant element
List of participants on the media and associated state
type String Type of the participant Valid values are
agent
external
customer
id String Participant identifier (for example agent extension or customer phone numbersip identifier)
state String Current state Valid values are
active
ready
hold
viaUCID String Optional Unique identifier for media instance indicating that a new call has been created outside of the original POM call described by UCID For example when an external agent (other than the one who initiated the call with customer) is consulted or conferenced with the initial agent viaUCID is set to UCID value of external agentrsquos media leg
Meta data as name value pairs (optional)
String Meta data like
jobid = 23
zone=Default
o Zone relates to POM zone
o Default indicates use of default POM zone
o String value of the name of the zone
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3425 state=active gt ltparticipant type=customer id=sipcustomernamepomcom state=hold gt ltparticipant type=agent id=3426 state=active viaUCID=rdquo10000001321234567890rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt200ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
Figure 34 MediaInfoEvent XML message For more details on concepts of POM please refer the product document ndash Using Proactive Outreach Manager guide For more details on UCID please refer chapter lsquoUniversal Call Identifier (UCID) values included in UUI datarsquo from Experience Portal administration guide
424 MediaComplete Event
Event Name ndash MediaCompleteEvent Purpose ndash Purpose of this event is to notify the recording application when media or RTP
established between the agentrsquos phone and the customerrsquos handset or any other agentrsquos phone is dropped ie when agent comes out of talking state With every participant drop
from the established RTP or telephony leg a MediaCompleteEvent message is sent to the recording application For details on how POM connects between agent and customer
please refer chapter Architecture Overview Various scenarios with MediaCompleteEvent are covered in POM Call Scenarios chapter
Pre-requisite ndash Successfully established socket connection successful login agent is acquired and media is established with agentrsquos extension or telephony leg
Definition ndash The message details are shown below
Attribute Type Description
agentID String
Agent ID
agentExtn String
Extension of the agent agentExtn can be in one of 2 formats depending on the originating media
sip9999avayacom
9999
workitem id String
workitem id value is unique per successful connect between agent and the customer it represents outreach attempt worked upon by the agent
UCID String
Unique identifier assigned by the system for a media instance Please refer section Enable UCID generation for details on UCID
mediaType String
Type of campaign Valid values are
Progressive
Preview
XML Message
nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3425 agentExtn=sip3425pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt
Figure 35 MediaCompleteEvent XML message
5 POM Call Scenarios This chapter describes various call scenarios for agent based operations performed by agents registered with POM Call scenarios are described with the help of sequence of events and the event payload details For details on purpose and definition of recording events please refer chapter POM Recording Events
51 Scenario Agent working on call The figure 36 below depicts the sequence of events between POM and the recording application for an agent to be able to work and dispose the call followed by agent getting logged offnailed out of POM
Figure 36 Scenario Agent working on call
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=10000001321337930446 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 1 agentID 3456 UCID 8888
MediaInfo participants
participant type Agent Id 3456 state active
participant type Customer Id
821700 state active
Message 4 agentID 3456 UCID 8888 MediaComplet
e
52 Scenario Agent holds while working on call The figure 37 below depicts the sequence of events between POM and the recording application when an agent puts the customer call on hold while working on the call followed by agent getting logged offnailed out of POM
Figure 37 Scenario Agent puts customer on hold
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=hold gt ltparticipant type=customer id=821700 state=hold gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 2 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state
active
participant type
customer id
821700
state
active
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type agent id 3456
state hold
participant type
customer id
821700
state hold
Message 4 agentID 3456 UCID 8888
MediaInfo Participant participant Agent id 3456 stat activ
s type e e
participant type
Customer id
821700
state
active
Message 5 agentID 3456 UCID 8888
MediaComplete
53 Scenario Agent consulttransfer while working on call With multiple agents working on a call say in case of consult conference or transfer POM sends recording events for media initiated by each agent as a participant The recording application should be designed such that same events across agents can be identified and ignored and relevant events are recorded The recorder application can leverage the UCID and agentID value available in the message payload to identify and relate the media events per agent participating in a common call The below figure depicts sequence of recording events when agent consults another POM agent while working on a call
Figure 38 Scenario Agent consults with other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt
----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt
ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 10---------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above
Message 3 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
Customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaComplete
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent id 3456
state
active
participant type
Customer id
821700
state
active
Message 8 agentID 3456 UCID 8888
MediaComplete
Similar to consult in case of a transfer scenario the agent to whom the call is transferred remains as an active participant in the call with the customer and the 1
st agent who initiated the call drops
out
54 Scenario Agent consultconference while working on call Similar to the agent consult and transfer scenario in a conference the agent connects to the customer puts the customer on hold and consults with another agent followed by conferencing the consulted agent to the call with the customer Thus all 3 participants ie both agents and the customer are all active participants in the call The figure 39 below depicts the sequence of agent consulting and conferencing another agent when on call with customer
Figure 39 Scenario Agent conferencing other agent
The XML messages for above sequence are listed below
----------------------------------------------------------Message 1---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3456 agentname=name agentExtn=sip3456pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 2---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltAgentAcquireEvent agentID=3455 agentname=name agentExtn=sip3455pomcomgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltAgentAcquireEventgt ----------------------------------------------------------Message 3---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 4---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3455 state=ready gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 5---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=hold gt ltparticipant type=agent id=3456 state=active viaUCID=rdquo9999rdquo gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 6---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3455 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt
ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 7---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3455 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipant type=agent id=3456 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 8---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3455 agentExtn=sip3455pomcom gt ltworkItem id=1162793 UCID=9999 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 9---------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaInfoEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltparticipantsgt ltparticipant type=agent id=3456 state=active gt ltparticipant type=customer id=821700 state=active gt ltparticipantsgt ltmetagt ltparam name=jobid gt123ltparamgt ltparam name=zone gtDefaultltparamgt ltmetagt ltMediaInfoEventgt ----------------------------------------------------------Message 10-------------------------------------------------------------- nnnnnnltxml version=10 encoding=UTF-8gt ltMediaCompleteEvent agentID=3456 agentExtn=sip3456pomcom gt ltworkItem id=1162793 UCID=8888 mediaType=Preview gt ltMediaCompleteEventgt ----------------------------------------------------------Message 11-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3455 agentExtn=sip3455pomcom agentname=namegt ltAgentReleaseEventgt ----------------------------------------------------------Message 12-------------------------------------------------------------- nnnnnn ltxml version=10 encoding=UTF-8gt ltAgentReleaseEvent agentID=3456 agentExtn=sip3456pomcom agentname=namegt ltAgentReleaseEventgt
The table below highlights the payload for MediaInfo and MediaComplete event messages for the scenario described above Message 3 agentID 3456 UCID
8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 4 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3455
state
ready
Message 5 agentID 3455 UCID 8888
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state hold
participant type Agent Id 3456
state
active
viaUCID
9999
Message 6 agentID 3455 UCID 9999
MediaInfo Participants
participant type Agent Id 3455
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3456
state
active
Message 7 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
participant type Agent Id 3455
state
active
Message 8 agentID 3455 UCID 9999
MediaComplete
Message 9 agentID 3456 UCID 8888
MediaInfo Participants
participant type Agent Id 3456
state
active
participant type
customer Id
821700
state
active
Message 10 agentID 3456 UCID 8888
MediaComplete
6 Sample Client Sample client is available on the support site supportavayacom in the name of RecorderSampleClientzip THIS DEMONSTRATION SOFTWARE IS PROVIDED FOR THE SOLE PURPOSE OF DEMONSTRATING HOW TO USE THE SOFTWARE DEVELOPMENT KIT AND MAY NOT BE USED IN A LIVE OR PRODUCTION ENVIRONMENT THIS DEMONSTRATION SOFTWARE IS PROVIDED ON AN AS IS BASIS WITHOUT ANY WARRANTIES OR REPRESENTATIONS EXPRESS IMPLIED OR STATUTORY INCLUDING WITHOUT LIMITATION WARRANTIES OF QUALITY PERFORMANCE INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Please follow the below steps to use the sample client and integrate with POM
1 Download the RecorderSampleClientzip file from support site 2 Import the zip file as an eclipse project Go to Eclipse Files Import menu 3 Select the general options 4 Select existing project into workspace option 5 Select the lsquoSelect Archive Filersquo option 6 Click the browse option and select the archive file downloaded in step 1 7 Click Finish The lsquoPOMRecorderSampleClientrsquo project will be created in the eclipse
workspace 8 Edit the configproperties file in the workspace location
($WORKSPACE_LOCATIONconfigproperties) with the below information POM-ipaddress= Provide the IP address of POM server on which agent manager is active port=Provide the port number on which recorder server is listening port number can be set from POM UI POM Home Global Configuration username= Provide the POM username who has WFO Recording permission password= Password of above provided username zone=Provide zone name for which recording should be done you can provide the comma separated zone names or lsquoAllrsquo if you want to record all zones agents issecured= This can be set from POM UI POM Home Global Configuration possible values could be lsquosecuredrsquo if Enable Secured Connection checkbox is checked on POM Global Configuration page else lsquononersquo certificate_path=CPathToPOMKeyStore this is required only in case of secured connection storepassword=Password for POM keystore this is required only in case of secured connection
9 Open the POMRecorderSampleClientjava or select it from Package Explorer right click on it and select Run As Java Application alternatively click on Run menu and select Run As Java Application
10 Check the Eclipse console if connection is being established and required events are received
7 Limitations As of current POM design
API for Start and Stop recording is not available
API for screen recording for example events prior a successful connect and wrap-up is not available
Keep-alive status between POM and recording application is not available in the design
Appendix A ndash Glossary
Term Description
POM Proactive Outreach Manager
AACC Avaya Aura Contact Center
CC-Elite Contact Center Elite
AAEP Avaya Aura Experience Portal
ACR Avaya Call Recorder
AES Avaya Enablement Service
API Applications Programming Interface
ASM Avaya Session Manager
CM Communications Manager (Avaya Aura Communications Manager)
CMS Call Management System (Avaya)
EPM Experience Portal Manager
MPP Media Processing Platform
OCWS Outbound Call Web Service
PRD Product Requirements Document
SDK Software Development Kit
SRAD System Requirements and Architecture Document
WFO Workforce Optimization
DMCC Device Media and Call Control
CTI Computer Telephony Integration
Appendix B ndash Content out of scope This document does not cover
Administration and configuration details of Avaya Aura products like Communication Manager Application Enablement Services and Avaya Contact Recorder
This document does not introduce nor describe the AE Services Device Media and Call Control API which is a necessary component of a call recording solution
Administration of the recording application
Licensing requirements of the recording application
Troubleshooting recording application
Appendix C ndash Troubleshooting
1 Broken connection between POM and recording application How to Identify To verify a TCP connection log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7999 command Verify ESTABLISHED status on configured port with the configured POM IP address (in this case that is 14814717389 Example for a configured port of 7999 is shown below
Corrective action
Ensure both POM and recording application is in network and is reachable
Ensure POM service andor POM agent manager service is running Refer Implementing Proactive Outreach Manager and Troubleshooting Proactive Outreach Manager documents for more details
2 TLS Handshake failure between POM and recording application
How to Identify To verify handshake is successful and a TCP connection is established log in to the Linux shell of the Avaya Proactive Outreach Manager server and issue the below command netstat ndashna | grep 7998 command Verify ESTABLISHED status on configured port with the configured POM IP address Corrective action
Ensure POM server certificate is exported successfully from POM server configuration page as explained in section TLS based secured connection
Ensure the exported certificate is copied to trust store of recording application
Ensure enable secured connection is configured in global configuration page Ensure agtmgr service is restarted before initiating a connection from the recording application to POM
In case of multiple POM server deployment or multiple recorder application deployment ensure the certificate exchange is done with all POM servers involved
3 Recording application login authentication failure How to Identify POM server responds to LoginRequest with various error codes as described in section LoginResponse Event Use sample client to send and receive login response in order to receive the error code Corrective action
Ensure POM server IP address configured in login request is correct
Ensure credentials to login are correct
Ensure correct LoginRequest XML message interface definition is used by the recording application
Ensure correct zone name is mentioned in the LoginRequest XML message
4 No recording events sent to recording application
How to Identify No recording files are listed in recording application Corrective action
Ensure connection to POM server is established
Ensure authentication with POM server is successful
Login an agent in POM via desktop and let the agent work on a call with the customer
Use sample client to send LoginRequest with pumpup attribute value set to true and verify whether ListAgentsResponse is received by the sample client The ListAgentsResponse should contain details of the logged in agent in payload For details on xml messages being shared between POM and Recorder application please check the PIM_AgtMgrlog file available in $POM_HOMElogs folder on the POM system
If all the above steps are working troubleshoot the recording application