[Sofaswitch-svn] [commit] r374 - in sofaswitch/trunk/callflow: src tests
Author: derek Date: Mon Jul 30 22:10:51 2007 New Revision: 374 Modified: sofaswitch/trunk/callflow/src/shapelist.cpp sofaswitch/trunk/callflow/src/timer.cpp sofaswitch/trunk/callflow/tests/amplaywavfile.src sofaswitch/trunk/callflow/tests/amtest.src sofaswitch/trunk/callflow/tests/child.src sofaswitch/trunk/callflow/tests/dtmf_from_sound.src Log: Multiple fixes, to get it to work correctly. Tidy up tests for network events. Now, accepts all network messages. Append to the inline documentation. Modified: sofaswitch/trunk/callflow/src/shapelist.cpp ============================================================================== --- sofaswitch/trunk/callflow/src/shapelist.cpp (original) +++ sofaswitch/trunk/callflow/src/shapelist.cpp Mon Jul 30 22:10:51 2007 @@ -369,12 +369,6 @@ file.AddLine(" self.generatedEvents = {} "); file.AddLine(" self.pendingEvents = {} "); file.AddLine(" self.currentHandlers= {} "); - file.AddLine(" self.knownNetworkMessages= [] "); - file.AddLine(" self.knownNetworkMessages.append(\"REQUESTNEWID\") "); - file.AddLine(" self.knownNetworkMessages.append(\"RECEIVEDDTMF\") "); - file.AddLine(" self.knownNetworkMessages.append(\"Terminating\") "); - file.AddLine(" self.knownNetworkMessages.append(\"QueryAcceptIncoming\") "); - file.AddLine(" self.knownNetworkMessages.append(\"FinishedFile\") "); char c= 34; wxString tString = wxString::Format(" self.quote = \"\\%c\"", c); file.AddLine(tString.c_str()); @@ -516,8 +510,17 @@ file.AddLine(" "); file.AddLine(" Note that the dataTuple consists of the "); file.AddLine(" eSource, eName, eData where e implies event "); + file.AddLine(" "); + file.AddLine(" For a network event: "); + file.AddLine(" eSource is the sofaID of the node who sent the message "); + file.AddLine(" eName could be what it is - like FinishedFile "); + file.AddLine(" eData (often blank), is the data part of the network message"); + file.AddLine(" For a Timer event: "); + file.AddLine(" eSource ID of the graph entity where the event was generated"); + file.AddLine(" eName The name of the timer doing the timeout "); + file.AddLine(" eData The period of time waited for "); file.AddLine(" \"\"\" "); -// file.AddLine(" print \"Network event data tuple is \", dataTuple "); + file.AddLine(" #print \"event data tuple is \", dataTuple "); file.AddLine(" self.generatedEvents[eName] = dataTuple "); file.AddLine(" reactor.callLater(0, self.processQueue, 0) "); file.AddLine(" "); @@ -622,26 +625,22 @@ file.AddLine(" "); file.AddLine(" def processReceivedMessage(self, thisMessage): "); file.AddLine(" \"\"\"Handle an ordinary message from the remote sofa server. Break the message up"); - file.AddLine(" turn it into a MyEvent message, and added to the right "); + file.AddLine(" turn it into a MyEvent message, and added to the right "); file.AddLine(" queue. On doing this, spark an event to drive queue processing. "); - file.AddLine(" Note that this method can only deal with certain predefined "); - file.AddLine(" types of messages "); + file.AddLine(" Note that this method can deal with all network messages. "); file.AddLine(" \"\"\" "); file.AddLine(" thisMessage = thisMessage.strip() "); - file.AddLine(" for msg in self.knownNetworkMessages: "); - file.AddLine(" if thisMessage.find(msg) >= 0: "); - file.AddLine(" idxc = thisMessage.find(\":\") "); - file.AddLine(" eventSource = thisMessage[0:idxc] "); - file.AddLine(" idxs = thisMessage.find(\" \") "); - file.AddLine(" if idxs < 0: "); + file.AddLine(" idxc = thisMessage.find(\":\") "); + file.AddLine(" eventSource = thisMessage[0:idxc] "); + file.AddLine(" idxs = thisMessage.find(\" \") "); + file.AddLine(" if idxs < 0: "); file.AddLine(" eventName = thisMessage[(idxc+1):] "); file.AddLine(" eventData = \"\" "); - file.AddLine(" else: "); + file.AddLine(" else: "); file.AddLine(" eventName = thisMessage[(idxc+1):] "); file.AddLine(" eventData = thisMessage[(idxs+1):] "); - file.AddLine(" eventString = eventSource + eventName "); - file.AddLine(" eTuple = (eventSource, eventName, eventData) "); - file.AddLine(" self.networkEventData(eventString, eTuple) "); + file.AddLine(" eTuple = (eventSource, eventName, eventData) "); + file.AddLine(" self.networkEventData(eventSource+eventName, eTuple) "); file.AddLine(" "); file.AddLine(" "); for (int i = 0; i < DndShape::KnownShapes; i++) { Modified: sofaswitch/trunk/callflow/src/timer.cpp ============================================================================== --- sofaswitch/trunk/callflow/src/timer.cpp (original) +++ sofaswitch/trunk/callflow/src/timer.cpp Mon Jul 30 22:10:51 2007 @@ -104,10 +104,10 @@ file.AddLine(" print \"The timer label of \", self.data[a][\"Timer label\"], \" was unintelligible Python\" "); file.AddLine(" return self.data[a][\"Output\"] "); file.AddLine(" if b == 1: "); - file.AddLine(" #print \"Rx Timeout, now goto handler of \", self.data[a][\"Timeout Handler\"] "); - file.AddLine(" #print \"Event data is \", self.data[a][\"Event Data\"] "); - file.AddLine(" #print \"Event name is \", self.data[a][\"Event Name\"] "); - file.AddLine(" #print \"Event source is \", self.data[a][\"Event Source\"] "); + file.AddLine(" #print \"Rx Timeout, now goto handler of \", self.data[a][\"Timeout Handler\"] "); + file.AddLine(" #print \"Event data is \", self.data[a][\"Event Data\"] "); + file.AddLine(" #print \"Event name is \", self.data[a][\"Event Name\"] "); + file.AddLine(" #print \"Event source is \", self.data[a][\"Event Source\"] "); file.AddLine(" return self.data[a][\"Timeout Handler\"] "); file.AddLine(" pVbl = self.data[a][\"Event Data\"] + \" = None\" "); file.AddLine(" exec(pVbl) "); @@ -121,7 +121,7 @@ file.AddLine(" print \"The timer period of \", self.data[a][\"Timer period\"], \" was unintelligible\" "); file.AddLine(" return self.data[a][\"Output\"] "); - file.AddLine(" self.pendingEvents[eName] = (a, eName, \"\") "); + file.AddLine(" self.pendingEvents[eName] = (a, eName, str(tPeriod)) "); file.AddLine(" self.currentHandlers[eName] = a "); file.AddLine(" #print \"add an expire timer of \", tPeriod, \" seconds\" "); file.AddLine(" reactor.callLater(tPeriod, self.timerObjectExpired, eName) "); Modified: sofaswitch/trunk/callflow/tests/amplaywavfile.src ============================================================================== --- sofaswitch/trunk/callflow/tests/amplaywavfile.src (original) +++ sofaswitch/trunk/callflow/tests/amplaywavfile.src Mon Jul 30 22:10:51 2007 @@ -1,2 +1,2 @@ -10<B>513<B>259<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>5<B>770<B>331<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>9<B>557<B>337<B>557,337,606,341<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>998<B>400<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>9<B>1041<B>383<B>1041,383,1080,385<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>631<B>332<B>631,366,685,332<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>252<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.dtmfData<ms><special> <B><Shape>2<B>1055<B>385<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>5<B>660<B>332<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>9<B>199<B>121<B>199,121,214,248<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>544<B>394<B>606,394,602,560,544,561<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>770<B>416<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>17<B>516<B>509<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>12<B>990<B>548<B> extra <special>Tool Tip<ms>timer which, when completed -indicates the program should end<ms><special>Timer period (seconds, Python code)<ms>0.1<ms><special>Timer label (Python code)<ms>self.myId + "thistimer"<ms><special> <B><Shape>9<B>304<B>115<B>304,119,344,115<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>581<B>341<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="4"<ms><special> <B><Shape>7<B>989<B>497<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>2<B>657<B>421<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>16<B>659<B>379<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/entering.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>16<B>505<B>364<B> extra <special>Tool Tip<ms>Play Rogers voice<ms><special>Filename to read audio from (Python code)<ms>"../prompts/sample_message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>505<B>398<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>10<B>198<B>248<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>20<B>991<B>599<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>15<B>989<B>451<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>266<B>148<B>266,148,308,270<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>1013<B>571<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>11<B>256<B>98<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>9<B>302<B>486<B>302,486,541,509<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>292<B>270<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>5<B>507<B>312<B> extra <special>Tool Tip<ms>Test Roger voice<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>16<B>770<B>378<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/leaving.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>16<B>516<B>561<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>517<B>610<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>5<B>991<B>358<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>2<B>319<B>116<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>239<B>94<B>239,94,281,96<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>209<B>119<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>214<B>304<B>214,304,262,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>291<B>382<B>291,386,334,382,332,395<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>189<B>71<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>9<B>264<B>199<B>264,513,264,635,426,639,428,199,532,202,532,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>275<B>145<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>821<B>356<B>821,357,977,357,1018,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>307<B>394<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>710<B>331<B>710,357,795,331<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape> +9<B>264<B>199<B>264,513,264,635,426,639,428,199,532,202,532,262<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>198<B>248<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>5<B>581<B>341<B> extra <special>Tool Tip<ms>Repeat instructions<ms><special>Test (Python code)<ms>self.dtmfData=="4"<ms><special> <B><Shape>11<B>256<B>98<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>9<B>821<B>356<B>821,357,977,357,1018,356<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>770<B>416<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>5<B>241<B>359<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>(self.amNode != None) and (self.soundNode != None)<ms><special> <B><Shape>2<B>319<B>116<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>17<B>516<B>509<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>1041<B>383<B>1041,383,1080,385<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>239<B>94<B>239,94,281,96<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>544<B>394<B>606,394,602,560,544,561<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>557<B>337<B>557,337,606,341<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>991<B>599<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>657<B>421<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>16<B>516<B>561<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>1055<B>385<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>15<B>240<B>412<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>self.soundNode<ms><special> <B><Shape>20<B>209<B>119<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>291<B>384<B>291,384,331,384<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>16<B>659<B>379<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/entering.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>304<B>115<B>304,119,344,115<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>199<B>121<B>199,121,214,248<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>517<B>610<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>9<B>266<B>148<B>266,148,308,270<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>16<B>770<B>378<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Filename to read audio from (Python code)<ms>"../prompts/leaving.wav"<ms><special>answering machine node (Python code)<ms>self.amNode<ms><special> <B><Shape>9<B>631<B>332<B>631,366,685,332<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>1048<B>569<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>12<B>990<B>548<B> extra <special>Tool Tip<ms>timer which, when completed +indicates the program should end<ms><special>Timer period (seconds, Python code)<ms>0.1<ms><special>Timer label (Python code)<ms>"end diagram"<ms><special> <B><Shape>5<B>991<B>358<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="9"<ms><special> <B><Shape>10<B>513<B>259<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "dtmf received of ", self.dtmfData<ms><special> <B><Shape>16<B>505<B>364<B> extra <special>Tool Tip<ms>Play Rogers voice<ms><special>Filename to read audio from (Python code)<ms>"../prompts/sample_message.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>304<B>382<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>302<B>486<B>302,486,541,509<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>989<B>497<B> extra <special>Tool Tip<ms>End Call<ms><special>Worker node to activate (python code)<ms>self.amNode<ms><special> <B><Shape>9<B>1040<B>570<B>1040,570,1073,570<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>252<B>464<B> extra <special>Tool Tip<ms>Eventer<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: data associated<ms>self.dtmfData<ms><special> <B><Shape>5<B>770<B>331<B> extra <special>Tool Tip<ms>play leaving sound<ms><special>Test (Python code)<ms>self.dtmfData=="3"<ms><special> <B><Shape>9<B>266<B>329<B>308,329,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>989<B>451<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>214<B>308<B>214,308,266,359<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>507<B>312<B> extra <special>Tool Tip<ms>Test Roger voice<ms><special>Test (Python code)<ms>self.dtmfData=="1"<ms><special> <B><Shape>10<B>998<B>400<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "hangup, as dtmf 9 has been received"<ms><special> <B><Shape>9<B>710<B>331<B>710,357,795,331<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>20<B>275<B>145<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>5<B>660<B>332<B> extra <special>Tool Tip<ms>play entering sound<ms><special>Test (Python code)<ms>self.dtmfData=="2"<ms><special> <B><Shape>11<B>189<B>71<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>10<B>292<B>270<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print " have a sound node of ", self.soundNode<ms><special> <B><Shape>2<B>505<B>398<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>1<B>190<B>19<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape> Modified: sofaswitch/trunk/callflow/tests/amtest.src ============================================================================== --- sofaswitch/trunk/callflow/tests/amtest.src (original) +++ sofaswitch/trunk/callflow/tests/amtest.src Mon Jul 30 22:10:51 2007 @@ -1,4 +1,4 @@ -9<B>321<B>161<B>321,162,381,161<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>262<B>239<B> extra <special>Tool Tip<ms>End the Answering -machine node.<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>11<B>192<B>116<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape>12<B>262<B>288<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"deathtimer"<ms><special> <B><Shape>9<B>312<B>308<B>312,308,312,308,312,308,312,308,312,308,352,310<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>15<B>177<B>229<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>15<B>263<B>190<B> extra <special>Tool Tip<ms>Make the sound node -talk to itself, so the user hears echo.<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>242<B>141<B>242,141,242,141,242,141<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>242<B>136<B>242,136,288,136<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>177<B>365<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>9<B>222<B>166<B>222,166,288,186<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>329<B>310<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>17<B>177<B>276<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>14<B>275<B>136<B> extra <special>Tool Tip<ms>wait for incoming DTMF from the sound node. -On receiving DTMF, end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>20<B>266<B>340<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>22<B>201<B>72<B> extra <special>Tool Tip<ms>Register for events from sound node<ms><special>Node to receive events from (Python code)<ms>"sound"<ms><special> <B><Shape>16<B>177<B>320<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>2<B>360<B>161<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>1<B>192<B>26<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>185<B>167<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape> +10<B>185<B>167<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have a new am node on ", self.amNode<ms><special> <B><Shape>16<B>177<B>320<B> extra <special>Tool Tip<ms>initial wav file<ms><special>Filename to read audio from (Python code)<ms>"../prompts/instructions.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>12<B>262<B>288<B> extra <special>Tool Tip<ms>Timer<ms><special>Timer period (seconds, Python code)<ms>1<ms><special>Timer label (Python code)<ms>"deathtimer"<ms><special> <B><Shape>9<B>323<B>158<B>323,159,383,158<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>177<B>365<B> extra <special>Tool Tip<ms>End Processing<ms><special> <B><Shape>22<B>201<B>72<B> extra <special>Tool Tip<ms>Register for events from sound node<ms><special>Node to receive events from (Python code)<ms>"sound"<ms><special> <B><Shape>17<B>177<B>276<B> extra <special>Tool Tip<ms>Write To File<ms><special>Filename to contain new audio (Python code)<ms>"recorded_audio.wav"<ms><special>answering machine node<ms>self.amNode<ms><special> <B><Shape>9<B>222<B>166<B>222,166,288,186<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>1<B>192<B>26<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>15<B>263<B>190<B> extra <special>Tool Tip<ms>Make the sound node +talk to itself, so the user hears echo.<ms><special>First SofaSwitch worker (python)<ms>"sound"<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>9<B>242<B>141<B>242,141,242,141,242,141<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>242<B>136<B>242,136,288,136<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>275<B>136<B> extra <special>Tool Tip<ms>wait for incoming DTMF from the sound node. +On receiving DTMF, end everything<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.eventData<ms><special> <B><Shape>2<B>356<B>156<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>9<B>314<B>310<B>314,310,314,310,314,310,314,310,314,310,354,312<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>7<B>262<B>239<B> extra <special>Tool Tip<ms>End the Answering +machine node.<ms><special>Worker node for termination (python code)<ms>self.amNode<ms><special> <B><Shape>20<B>266<B>340<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>329<B>310<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>15<B>177<B>229<B> extra <special>Tool Tip<ms>Transfer Media<ms><special>First SofaSwitch worker (python)<ms>self.amNode<ms><special>Second SofaSwitch worker (python)<ms>"sound"<ms><special> <B><Shape>11<B>192<B>116<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"am"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.amNode<ms><special> <B><Shape> Modified: sofaswitch/trunk/callflow/tests/child.src ============================================================================== --- sofaswitch/trunk/callflow/tests/child.src (original) +++ sofaswitch/trunk/callflow/tests/child.src Mon Jul 30 22:10:51 2007 @@ -1 +1 @@ -20<B>531<B>142<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>10<B>528<B>93<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "CHILD says::: parent id is ", self.parentId, " child id is ", self.myId, "data from parent is ", self.userData<ms><special> <B><Shape>1<B>518<B>50<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape> +10<B>528<B>93<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "CHILD says::: parent id is ", self.parentId, " child id is ", self.myId, "data from parent is ", self.userData<ms><special> <B><Shape>1<B>518<B>50<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>20<B>533<B>152<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape> Modified: sofaswitch/trunk/callflow/tests/dtmf_from_sound.src ============================================================================== --- sofaswitch/trunk/callflow/tests/dtmf_from_sound.src (original) +++ sofaswitch/trunk/callflow/tests/dtmf_from_sound.src Mon Jul 30 22:10:51 2007 @@ -1 +1 @@ -2<B>247<B>153<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>1<B>168<B>34<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>20<B>192<B>252<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>200<B>135<B>200,135,205,195<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>189<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>10<B>164<B>131<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.newNode<ms><special> <B><Shape>9<B>148<B>379<B>148,379,203,381,206,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>9<B>122<B>191<B>180,191,122,266<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Wait for DTMF from sound, to end everything.<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>10<B>252<B>103<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>11<B>170<B>85<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>2<B>183<B>418<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>9<B>158<B>288<B>159,288,158,361,211,363,206,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>9<B>220<B>103<B>220,105,268,103<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape> +9<B>220<B>103<B>220,105,268,103<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>105<B>307<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "DTMF detected is ", self.dtmfData<ms><special> <B><Shape>10<B>252<B>103<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "Have requested a node from sound at ", time.asctime()<ms><special> <B><Shape>1<B>168<B>34<B> extra <special>Tool Tip<ms>Start Processing<ms><special> <B><Shape>10<B>189<B>195<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "timer has expired at ", time.asctime(), " ", self.timerData<ms><special> <B><Shape>9<B>158<B>288<B>159,288,158,361,211,363,206,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>14<B>109<B>266<B> extra <special>Tool Tip<ms>Wait for DTMF from sound, to end everything.<ms><special>Event sought (Python code)<ms><ms><special>Event sought (Regular Exp)<ms>DTMF<ms><special>Python variable: source of the event<ms>self.eventSource<ms><special>Python variable: name of the event<ms>self.eventName<ms><special>Python variable: generated data<ms>self.dtmfData<ms><special> <B><Shape>2<B>247<B>153<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>5<B>98<B>354<B> extra <special>Tool Tip<ms>Conditional<ms><special>Test (Python code)<ms>self.dtmfData=="*"<ms><special> <B><Shape>9<B>148<B>379<B>148,379,203,381,206,422<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>10<B>164<B>131<B> extra <special>Tool Tip<ms>Python<ms><special>Python Code<ms>print "have a new node on ", self.soundNode<ms><special> <B><Shape>20<B>110<B>395<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>9<B>200<B>135<B>200,135,205,195<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>2<B>183<B>418<B> extra <special>Tool Tip<ms>Suspend Processing<ms><special> <B><Shape>9<B>122<B>191<B>180,191,122,266<special>Tool Tip<ms>Join blocks shape<ms><special> <B><Shape>11<B>170<B>85<B> extra <special>Tool Tip<ms>Request Node<ms><special>Request node from (Python code)<ms>"sound"<ms><special>Timer period (seconds)<ms>1<ms><special>Info to send to remote node (Python code)<ms><ms><special>Python variable: generated data<ms>self.soundNode<ms><special> <B><Shape>20<B>192<B>252<B> extra <special>Tool Tip<ms>Death<ms><special> <B><Shape>
participants (1)
-
SofaSWITCH SVN