VoiceXML Record whole call, including menu options - voicexml

I'm trying to record a whole phone call using VoiceXML (on Nexmo).
I can make a recording or give menu prompts and forward a call seperately, but I can't work out how to do both together. I'd like to record the call from start to finish, including the forwarded call part.
I would imagine the VoiceXML would look something like this, but this isn't valid VoiceXML.
<?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1" >
<var name="callerid" expr="123" />
<form>
<record name="recording" beep="true" dtmfterm="true" maxtime="100s">
<menu dtmf="true">
<property name="inputmodes" value="dtmf"/>
<audio src="server/forwardingnow.mp3"/>
<choice dtmf="10" next="#sales"/>
<choice dtmf="30" next="#support"/>
</menu>
<form id="sales">
<transfer name="MyCall" dest="tel:123123123" bridge="true" connecttimeout="20s"/>
</form>
<form id="support">
<transfer name="MyCall" dest="tel:123123123" bridge="true" connecttimeout="20s"/>
</form>
<catch event="connection.disconnect.hangup">
<submit next="server/voice/savecall" method="post" namelist="recording callerid" enctype="multipart/form-data"/>
</catch>
</record>
</form>

It is not possible to do this using standard VoiceXML, you either have to use vendor extensions or put your call in conference with a recording application (a single document with a single for the whole call).

We had GeneSys add this for our company about 10 years ago. (Who knows, maybe other vendors started supporting it this way since then; try it ...) In your vxml, as soon as it is entered, add this vendor-specific log line to the first block of the first form entered in order to turn on whole call recording (NOTE: they MUST each be on their own line for it to work in GeneSys, so do not reformat these 4 lines):
<log gvp:dest="calllog">
directory /myDirectoryName absolute
enable callrec type=audio/wav recsrc=mixed;
</log>
Whole call recording will automatically end when the call is disconnected; or you can end it when you want by executing this log line:
<log gvp:dest="calllog">
disable callrec;
</log>

CCXML is for this purpose.
You can use CCXML for conference and record call etc...
I have built click to call and conference recording for InterpreXer

Voximal is the VoiceXML interpreter for Asterisk.
He can manage the Asterisk Application from the VoiceXML syntaxe.
With the MixMonitor application you can record all the call and then post the result with the ot tags...

Related

Problem with adding a new field to an existing model

I have created a new module in order to add a field to a view but i have this error: "the field 'cin' does not exist
my client.xml code:
<record id="view_partner_form_inherit" model="ir.ui.view">
<field name="name">res.partner.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<!-- Leave the 'arch' field open -->
<field name="arch" type="xml">
<!-- Put your custom field and its position inside the 'arch' field.
Use 'xpath' tag to create a more precise positioning -->
<xpath expr="//group/group/field[#name='name']" position="after">
<field name="cin"/>
</xpath>
<!-- Now, close the 'arch' field -->
</field>
</record>
I hope you can help me.
Please follow the following steps:
There are two ways you can add new fields to res.partner model.
Uninstall the module. Then add new fields in python and xml file and then restart the server. After server restart install the module again.
But if you don't want to uninstall the module then First remove the new fields from xml and python files. Restart the server. Goto odoo apps page and open the module to upgrade. Don't click the upgrade button. Just keep it open. Then add the new fields in python and xml files and restart odoo services. After server restart click on upgrade button. In this way new fields will be added.
Hope this works for you.

Ability to Merge Voice Menu options with Recording Audio with VoiceXML and Plum Voice

I am trying to achieve the same issue mentioned VoiceXML Record whole call, including menu options a nutshell, have VoiceXML Record whole call while also including menu options. I need to do this is PlumVoice and as per the suggestions need to look for a vendor extension if available.
I tried to look for the vendor extensions but didn't find it. I am fairly new to VoiceXML.Is anyone familiar if this is possible with PlumVoice(version 3.2.8)?
Basically merging these two blocks of code: where the user can say a menu option using voice mode but also recording the whole audio as a wav file.
Voice Menu Selection
<?xml version="1.0"?>
<vxml version="2.0">
<form id="mainmenu">
<field name="menuchoice">
<grammar type="application/x-jsgf" mode="voice">
one|two|three
</grammar>
<prompt>
For sales, say 1.
For tech support, say 2.
For company directory, say 3.
</prompt>
<filled>
<if cond="menuchoice=='one'">
Welcome to sales.
<elseif cond="menuchoice=='two'"/>
Welcome to tech support.
<elseif cond="menuchoice=='three'"/>
Welcome to the company directory.
</if>
</filled>
</field>
</form>
</vxml>
Recording audio input
<?xml version="1.0"?>
<vxml version="2.0">
<form>
<record name="myrecording" type="audio/x-wav" beep="true">
<prompt>
Please record a message after the beep.
</prompt>
​
<filled>
You just recorded the following message:
<value expr="myrecording"/>
<submit next="submitrecording.php" namelist="myrecording"
method="post" enctype="multipart/form-data"/>
</filled>
</record>
</form>
</vxml>
Is this possible with a PlumVoice(version 3.2.8) vendor extension?
It is not a standard VoiceXML feature (out of the VoiceXML standard).
Only some VoiceXML interpreters like Voximal can do that by adding extra properties (property record utterance for example).

Adding configuration options to a basic JIRA gadget

This line in the Atlassian documentation leads me to believe that simply including a UserPref element should be sufficient to automatically generate the UI for updating the configuration of a gadget:
The container handles generation of the configuration UI, saves the settings and provides an API to access the settings in JavaScript.
But it doesn't seem to actually work when I create a test gadget with the following - I don't see any options when I click the "Edit" link on the gadget:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs
title="Test"
author="Test Test"
author_email="test#example.com"
directory_title="JIRA Tests"
>
<Require feature="setprefs" />
</ModulePrefs>
<UserPref name="show_summ" display_name="Show Summaries?" datatype="bool" default_value="true"/>
<Content type="html">
<![CDATA[
<div id="main">Test Stuff</div>
]]>
</Content>
</Module>
Is there more to do to make that happen? I've seen a few examples that hard-code configuration options, but the above documentation suggest that you don't have to.
Is that something that's only available if you're packaging it as a plugin, or if you include some other js resource? So far I've been doing a bare plugin so I don't have access to stuff like #requireResource, but I'm fine with hard-coding some script elements if that's what's necessary (for now).
Sincerely stumped.
Unfortunatly that neer worked for me eighter. I think it broke in JIRA 6..
Solution: take the javascript approach and you will be just fine. it is also way more powerful.
it works for me, just add this script
<![CDATA[
<script type="text/javascript">
window.onload = function(){
var edit = window.parent.document.getElementById(window.frameElement.id + '-edit');
edit.classList.remove('hidden');
edit.style.display = 'none';
}
</script>
]]>

open new flow from another flow

We have a "Home page" with multiple functionality and one of them is Account command link. Home page is define in the main-flow.xml(see below) and when we will click this link, the new flow should open.
main_page.xhtml file:
<h:commandLink value="Account" target="_blank" action="account"/>
main-flow.xml file:
<view-state id="main_page">
<transition-state on="account" to="newFlowOpen"/>
</view-state>
<view-state id="newFlowOpen" view="/Report/account.xhtml"/>
But when we click this link, than instead of opening new flow like e2s1, its simple opening new execution key with same flow execution like e1s2 which wrong.
Please advise me on this :(
Because you added "newFlowOpen" as a view-state inside the main-flow.xml thus it is a part of main-flow.xml and not an independent stand alone flow.
If you want to create an independent stand alone flow you need to create a new "account-flow.xml" in it's own path. Once you do this the account link on the "Home page" once clicked will leave the existing flow and create a new account-flow.
If holding on/remembering the the main-flow state is important... OPTIONALLY (after doing the above), you can embed the newly created stand alone account flow inside the main-flow as a subflow.
Reasons to create a subflow relationship between parent->child flow:
When you want to pass parameters or POJOs between 2 flows (without embedding the parameters inside the url)
When you want preserve the parent flow's current state(s) and return back to the parent flow once the child flow is completed.
Below is a good example of how to create a subflow:
http://www.springbyexample.org/examples/spring-web-flow-subflow-webapp.html
<!-- You would place the subflow-state below inside main-flow.xml -->
<subflow-state id="accountSubflow" subflow="account">
<input name="id" value="accountId"/> <!-- input to send to subflow-->
<input name="person" value="person" type="foo.bar.entities.Person"/> <!-- input to send to subflow for pojos you have explicitly declare the type-->
<output name="boolSuccess" /> <!-- output returned by the subflow -->
<transition on="save" to="saveForm"/> <!-- "save" = id of the <end-state id="save"> inside the subflow -->
<transition on="cancel" to="cancelForm" /> <!-- "cancel" = id of the <end-state id="cancel"> inside the subflow -->
</subflow-state>

How to get the language specific messages using google closure template

Am trying to implement internationalization support to my project for this people suggested google Closure Templates.but am very new to closure templates.am trying to get the language specific messages using closure template but am not getting in xlf file.If any one knows how to generate language specific messages using closure template, please tell me the steps.that's great help to me.
My .soy file code as bellow.
{namespace poc}
/**
*Testing message translation
*#param pageTitle
*/
{template .translate}
<HTML>
<Head>
<title>{$pageTitle}
</title>
</head>
<div>
{msg desc="Hello"}Hello{/msg}
</div>
</html>
{/template}
and generated .xlf content as bellow
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file original="SoyMsgBundle" datatype="x-soy-msg-bundle" xml:space="preserve" source-language="en" target-language="pt-BR">
<body>
<trans-unit id="2286494898080570401" datatype="html">
<source>Thanks</source>
<target/>
<note priority="1" from="description">Says thanks</note>
</trans-unit>
</body>
</file>
</xliff>
I see you already used the SoyMsgExtractor to create the base xlf. Next you need to make translations of this base xlf to the languages you want to support. A file for each language is created. I used the xliff exitor from Translution. http://sourceforge.net/projects/eviltrans.
Next, using the SoyToJsSrcCompiler a translation soy can be made per language:
java -jar SoyToJsSrcCompiler.jar --shouldGenerateGoogMsgDefs --bidiGlobalDir 1 --messageFilePathFormat Filename_en-us.xliff --outputPathFormat FileName_fr.js *.soy
This will create a Filename._fr.js file that contains the compiled soy file.
Including this file instead of the original soy (or compiled) will create a localized version.
Good luck!
\Rene
i think the easiest way is to make (i.e. generate from whatever source) a separate js file which contains one messages object and reference it through an extern declared function.
it justs works and has no complicated dependencies.

Resources