wait for any state¶
- _wait_for_multiple_events.wait_for_any_state(state_list, seconds_timeout=120)¶
Wait for a state change in any of a list of call channel objects.
- Required argument:
- object_list
a list of call channels.
- state_list
this is a list containing the current state of each call channel in
object_list
.
- seconds_timeout
time allocated in seconds to wait for a state change. Default is 120.
This function will also return if an object’s state is IDLE or ERROR when the function is called.
This function will return a list containing the current state of each call channel object supplied in
object_list
.Usage example:
from prosody.uas import Error, Hangup, wait_for_any_state def main(channel, application_instance_id, file_man, my_log, application_parameters): # start a call on the outbound channel out_channel = channel.ExtraChannel[0] if out_channel.start_call('sip:3301@127.0.0.1:5060;user=phone', call_from='bob@1234') is True: # get the current state of the two channels state = channel.state() out_state = out_channel.state() # wait for a state change in either channel, e.g. # channel going to IDLE or out_channel going to ringing state, out_state = wait_for_any_state([channel, out_channel], [state, out_state]) # the inbound call might have gone IDLE if state == channel.State.IDLE: raise Hangup('channel state is IDLE') if out_state == out_channel.State.RING_OUTGOING: # perhaps do something here, e.g. put ringing on the inbound channel channel.ring() elif out_state == out_channel.State.ANSWERED: # do something here, e.g. answer the inbound call state = channel.answer()