@@ -600,6 +600,20 @@ def execute(self, userdata=None):
600600
601601 return 'succeeded'
602602
603+ @smach .cb_interface (outcomes = ["succeeded" , "failed" ])
604+ def process_answer (_ , context : Union [ds .Designator [str ], str ], answer_des , output_des ):
605+ try :
606+ answer_val = answer_des .resolve ()
607+ rospy .logdebug (f"{ answer_val = } " )
608+ semantic = answer_val .semantics [ds .value_or_resolve (context )]
609+ rospy .loginfo (f"Your answer is: '{ semantic } '" )
610+ output_des .write (semantic )
611+
612+ except KeyError as e :
613+ rospy .loginfo (f"KeyError resolving the semantic heard: { e } " )
614+ return "failed"
615+ return "succeeded"
616+
603617
604618class AskPersonNamePicoVoice (smach .StateMachine ):
605619 """
@@ -613,19 +627,6 @@ def __init__(self, robot, person_name_des, default_name="operator", nr_tries=2):
613627 reset_des = ds .VariableDesignator (resolve_type = bool ).writeable
614628 answer = ds .VariableDesignator (resolve_type = HMIResult )
615629
616- @smach .cb_interface (outcomes = ["succeeded" , "failed" ])
617- def process_answer (_ , answer_des , output_des ):
618- try :
619- answer_val = answer_des .resolve ()
620- rospy .logdebug (f"{ answer_val = } " )
621- name = answer_val .semantics ["name" ]
622- rospy .loginfo (f"This person's name is: '{ name } '" )
623- output_des .write (str (name ))
624- except KeyError as e :
625- rospy .loginfo (f"KeyError resolving the name heard: { e } " )
626- return "failed"
627- return "succeeded"
628-
629630 with self :
630631 self .add (
631632 "WRITE_RESET_DES_TRUE" , WriteDesignator (reset_des , True ), transitions = {"written" : "SAY" }
@@ -642,12 +643,12 @@ def process_answer(_, answer_des, output_des):
642643 )
643644 self .add (
644645 "HEAR" ,
645- HearOptionsExtraPicoVoice (robot , "askPersonName " , answer .writeable ),
646+ HearOptionsExtraPicoVoice (robot , "receptionist " , answer .writeable , [ "personName" ] ),
646647 transitions = {"heard" : "PROCESS_ANSWER" , "no_result" : "CHECK_TRIES" },
647648 )
648649 self .add (
649650 "PROCESS_ANSWER" ,
650- smach .CBState (process_answer , cb_args = [answer , person_name_des ]),
651+ smach .CBState (process_answer , cb_args = ["name" , answer , person_name_des ]),
651652 transitions = {"succeeded" : "succeeded" , "failed" : "CHECK_TRIES" },
652653 )
653654 self .add (
0 commit comments