Each Message type listed contains a description outlining it's meaning or purpose. Where relevant, the Message type will also list the specific JSON data packets expected to be emitted with that Message, and the most common producers and consumers of the Message.
See the MessageBus documentation for further information on this service and examples of using Messages.
Request to speak utterance
Data:
{"utterance": <words to be spoken>,"lang": <language code, e.g. en-us>}
Usage:
...def initialize(self):self.add_event('speak',self.handler_speak)def handler_speak(self, message):# code to excecute when speak message detected......
...def some_method(self):self.bus.emit(Message('speak',{"utterance": <words to be spoken>,"lang": <language code, e.g. en-us>}))...
python3 -m mycroft.messagebus.send 'speak' '{ "utterance": <words to be spoken>, "lang": <language code, e.g. en-us>}'
Internet connection is now available (only generated on initial connection)
Usage:
...def initialize(self):self.add_event('mycroft.internet.connected',self.handler_mycroft_internet_connected)def handler_mycroft_internet_connected(self, message):# code to excecute when mycroft.internet.connected message detected......
...def some_method(self):self.bus.emit(Message('mycroft.internet.connected'))...
python3 -m mycroft.messagebus.send 'mycroft.internet.connected'
Sent by start-up sequence when everything is ready for user interaction
Producer | Consumer |
| Pairing Skill |
Usage:
...def initialize(self):self.add_event('mycroft.ready',self.handler_mycroft_ready)def handler_mycroft_ready(self, message):# code to excecute when mycroft.ready message detected......
...def some_method(self):self.bus.emit(Message('mycroft.ready'))...
python3 -m mycroft.messagebus.send 'mycroft.ready'
Stop command (e.g. button pressed)
Usage:
...def initialize(self):self.add_event('mycroft.stop',self.handler_mycroft_stop)def handler_mycroft_stop(self, message):# code to excecute when mycroft.stop message detected......
...def some_method(self):self.bus.emit(Message('mycroft.stop'))...
python3 -m mycroft.messagebus.send 'mycroft.stop'
Start the pairing process when this event is emitted.
Producer | Consumer |
Pairing Skill Weather Skill Wolfram Alpha Skill | Pairing Skill |
...def initialize(self):self.add_event('mycroft.not.paired',self.handler_mycroft_not_paired)def handler_mycroft_not_paired(self, message):# code to excecute when mycroft.not.paired message detected......
...def some_method(self):self.bus.emit(Message('mycroft.not.paired'))...
python3 -m mycroft.messagebus.send 'mycroft.not.paired'
Pairing has completed
Producer | Consumer |
Pairing Skill |
|
...def initialize(self):self.add_event('mycroft.paired',self.handler_mycroft_paired)def handler_mycroft_paired(self, message):# code to excecute when mycroft.paired message detected......
...def some_method(self):self.bus.emit(Message('mycroft.paired'))...
python3 -m mycroft.messagebus.send 'mycroft.paired'
Has come out of sleep mode
Usage:
...def initialize(self):self.add_event('mycroft.awoken',self.handler_mycroft_awoken)def handler_mycroft_awoken(self, message):# code to excecute when mycroft.awoken message detected......
...def some_method(self):self.bus.emit(Message('mycroft.awoken'))...
python3 -m mycroft.messagebus.send 'mycroft.awoken'
log level can be: "CRITICAL" "ERROR" "WARNING" "INFO" "DEBUG" These correspond to the Python logging object.
The "bus" parameter allows turning the logging of all bus messages on/off.
Data:
{"level" : <log level>,"bus": <True/False>}
Usage:
...def initialize(self):self.add_event('mycroft.debug.log',self.handler_mycroft_debug_log)def handler_mycroft_debug_log(self, message):# code to excecute when mycroft.debug.log message detected......
...def some_method(self):self.bus.emit(Message('mycroft.debug.log',{"level" : <log level>,"bus": <True/False>}))...
python3 -m mycroft.messagebus.send 'mycroft.debug.log' '{ "level" : <log level>, "bus": <True/False>}'
Intent processing failed
Usage:
...def initialize(self):self.add_event('complete_intent_failure',self.handler_complete_intent_failure)def handler_complete_intent_failure(self, message):# code to excecute when complete_intent_failure message detected......
...def some_method(self):self.bus.emit(Message('complete_intent_failure'))...
python3 -m mycroft.messagebus.send 'complete_intent_failure'
Notification to services that the configuration has changed and needs reloaded
Usage:
...def initialize(self):self.add_event('configuration.updated',self.handler_configuration_updated)def handler_configuration_updated(self, message):# code to excecute when configuration.updated message detected......
...def some_method(self):self.bus.emit(Message('configuration.updated'))...
python3 -m mycroft.messagebus.send 'configuration.updated'
Wakeword was heard
Data:
{"utterance": <wakeword heard>,"session": <session ID>,}
Producer | Consumer |
| |
Usage:
...def initialize(self):self.add_event('recognizer_loop:wakeword',self.handler_wakeword)def handler_wakeword(self, message):# code to excecute when recognizer_loop:wakeword message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:wakeword',{"utterance": <wakeword heard>,"session": <session ID>,}))...
python3 -m mycroft.messagebus.send 'recognizer_loop:wakeword' '{ "utterance": <wakeword heard>, "session": <session ID>,}'
Recording has started
Producer | Consumer |
| |
Usage:
...def initialize(self):self.add_event('recognizer_loop:record_begin',self.handler_record_begin)def handler_record_begin(self, message):# code to excecute when recognizer_loop:record_begin message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:record_begin'))...
python3 -m mycroft.messagebus.send 'recognizer_loop:record_begin'
Recording has ended
Producer | Consumer |
| |
Usage:
...def initialize(self):self.add_event('recognizer_loop:record_end',self.handler_record_end)def handler_record_end(self, message):# code to excecute when recognizer_loop:record_end message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:record_end'))...
python3 -m mycroft.messagebus.send 'recognizer_loop:record_end'
STT has detected the given text or text was injected as an utterance via the CLI.
Data:
{"utterances": [text],"lang": self.stt.lang,"session": session_id}
Producer | Consumer |
|
|
...def initialize(self):self.add_event('recognizer_loop:utterance',self.handler_utterance)def handler_utterance(self, message):# code to excecute when recognizer_loop:utterance message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:utterance',{"utterances": [text],"lang": self.stt.lang,"session": session_id}))...
python3 -m mycroft.messagebus.send 'recognizer_loop:utterance' '{ "utterances": [text], "lang": self.stt.lang, "session": session_id}'
Text output (TTS) has begun
Producer | Consumer |
| |
Usage:
...def initialize(self):self.add_event('recognizer_loop:audio_output_start',self.handler_audio_output_start)def handler_audio_output_start(self, message):# code to excecute when recognizer_loop:audio_output_start message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:audio_output_start'))...
python3 -m mycroft.messagebus.send 'recognizer_loop:audio_output_start'
Text output (TTS) has ended
Producer | Consumer |
| |
Usage:
...def initialize(self):self.add_event('recognizer_loop:audio_output_end',self.handler_audio_output_end)def handler_audio_output_end(self, message):# code to excecute when recognizer_loop:audio_output_end message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:audio_output_end'))...
python3 -m mycroft.messagebus.send 'recognizer_loop:audio_output_end'
Go into "sleep" mode. Everything except "Hey Mycroft, wake up" will be ignored.
Usage:
...def initialize(self):self.add_event('recognizer_loop:sleep',self.handler_sleep)def handler_sleep(self, message):# code to excecute when recognizer_loop:sleep message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:sleep'))...
python3 -m mycroft.messagebus.send 'recognizer_loop:sleep'
Come out of "sleep" mode.
Usage:
...def initialize(self):self.add_event('recognizer_loop:wake_up',self.handler_wake_up)def handler_wake_up(self, message):# code to excecute when recognizer_loop:wake_up message detected......
...def some_method(self):self.bus.emit(Message('recognizer_loop:wake_up'))...
python3 -m mycroft.messagebus.send 'recognizer_loop:wake_up'
Detected a connection error during STT
Producer | Consumer |
| |
Usage:
...def initialize(self):self.add_event('enclosure.notify.no_internet',self.handler_enclosure_notify_no_internet)def handler_enclosure_notify_no_internet(self, message):# code to excecute when enclosure.notify.no_internet message detected......
...def some_method(self):self.bus.emit(Message('enclosure.notify.no_internet'))...
python3 -m mycroft.messagebus.send 'enclosure.notify.no_internet'
start: timestamp for audio starts (unix epoch) END_TIME: time in seconds from "start" until the end of the viseme CODE can be 0 = shape for sounds like 'y' or 'aa' 1 = shape for sounds like 'aw' 2 = shape for sounds like 'uh' or 'r' 3 = shape for sounds like 'th' or 'sh' 4 = neutral shape for no sound 5 = shape for sounds like 'f' or 'v' 6 = shape for sounds like 'oy' or 'ao'
Data:
{"start": timestamp,"visemes": [[CODE,END_TIME],...]}
Usage:
...def initialize(self):self.add_event('enclosure.mouth.viseme_list',self.handler_enclosure_mouth_viseme_list)def handler_enclosure_mouth_viseme_list(self, message):# code to excecute when enclosure.mouth.viseme_list message detected......
...def some_method(self):self.bus.emit(Message('enclosure.mouth.viseme_list',{"start": timestamp,"visemes": [[CODE,END_TIME],...]}))...
python3 -m mycroft.messagebus.send 'enclosure.mouth.viseme_list' '{ "start": timestamp, "visemes": [[CODE,END_TIME],...]}'
Change eyes to default color
Producer | Consumer |
| mycroft-mark-1 |
Usage:
...def initialize(self):self.add_event('mycroft.eyes.default',self.handler_mycroft_eyes_default)def handler_mycroft_eyes_default(self, message):# code to excecute when mycroft.eyes.default message detected......
...def some_method(self):self.bus.emit(Message('mycroft.eyes.default'))...
python3 -m mycroft.messagebus.send 'mycroft.eyes.default'
Begin recording for STT processing
Usage:
...def initialize(self):self.add_event('mycroft.mic.listen',self.handler_mycroft_mic_listen)def handler_mycroft_mic_listen(self, message):# code to excecute when mycroft.mic.listen message detected......
...def some_method(self):self.bus.emit(Message('mycroft.mic.listen'))...
python3 -m mycroft.messagebus.send 'mycroft.mic.listen'
Turn off the mic (no wakeword or STT processing)
Producer | Consumer |
Pairing Skill |
|
Usage:
...def initialize(self):self.add_event('mycroft.mic.mute',self.handler_mycroft_mic_mute)def handler_mycroft_mic_mute(self, message):# code to excecute when mycroft.mic.mute message detected......
...def some_method(self):self.bus.emit(Message('mycroft.mic.mute'))...
python3 -m mycroft.messagebus.send 'mycroft.mic.mute'
Turn on the mic (enable wakeword and STT processing)
Producer | Consumer |
Pairing Skill |
|
Usage:
...def initialize(self):self.add_event('mycroft.mic.unmute',self.handler_mycroft_mic_unmute)def handler_mycroft_mic_unmute(self, message):# code to excecute when mycroft.mic.unmute message detected......
...def some_method(self):self.bus.emit(Message('mycroft.mic.unmute'))...
python3 -m mycroft.messagebus.send 'mycroft.mic.unmute'
Start playback of tracklist
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.play',self.handler_mycroft_audio_service_play)def handler_mycroft_audio_service_play(self, message):# code to excecute when mycroft.audio.service.play message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.play'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.play'
Stop playback
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.stop',self.handler_mycroft_audio_service_stop)def handler_mycroft_audio_service_stop(self, message):# code to excecute when mycroft.audio.service.stop message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.stop'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.stop'
Pause playback (if supported)
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.pause',self.handler_mycroft_audio_service_pause)def handler_mycroft_audio_service_pause(self, message):# code to excecute when mycroft.audio.service.pause message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.pause'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.pause'
Resume playback (if supported by backend)
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.resume',self.handler_mycroft_audio_service_resume)def handler_mycroft_audio_service_resume(self, message):# code to excecute when mycroft.audio.service.resume message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.resume'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.resume'
Skip to next track
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.next',self.handler_mycroft_audio_service_next)def handler_mycroft_audio_service_next(self, message):# code to excecute when mycroft.audio.service.next message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.next'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.next'
Skip to previous track
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.prev',self.handler_mycroft_audio_service_prev)def handler_mycroft_audio_service_prev(self, message):# code to excecute when mycroft.audio.service.prev message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.prev'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.prev'
Request track info from audio service
Producer | Consumer |
playback-control |
|
...def initialize(self):self.add_event('mycroft.audio.service.track_info',self.handler_mycroft_audio_service_track_info)def handler_mycroft_audio_service_track_info(self, message):# code to excecute when mycroft.audio.service.track_info message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.track_info'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.track_info'
Reply to track info request
Producer | Consumer |
|
|
Usage:
...def initialize(self):self.add_event('mycroft.audio.service.track_info_reply',self.handler_mycroft_audio_service_track_info_reply)def handler_mycroft_audio_service_track_info_reply(self, message):# code to excecute when mycroft.audio.service.track_info_reply message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.track_info_reply'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.track_info_reply'
Returns list of available backends.
Producer | Consumer |
|
|
Usage:
...def initialize(self):self.add_event('mycroft.audio.service.list_backends',self.handler_mycroft_audio_service_list_backends)def handler_mycroft_audio_service_list_backends(self, message):# code to excecute when mycroft.audio.service.list_backends message detected......
...def some_method(self):self.bus.emit(Message('mycroft.audio.service.list_backends'))...
python3 -m mycroft.messagebus.send 'mycroft.audio.service.list_backends'
Enclosure Volume up
Data:
{"play_sound": True}
Producer | Consumer |
| Volume Skill |
Usage:
...def initialize(self):self.add_event('mycroft.volume.increase',self.handler_mycroft_volume_increase)def handler_mycroft_volume_increase(self, message):# code to excecute when mycroft.volume.increase message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.increase',{"play_sound": True}))...
python3 -m mycroft.messagebus.send 'mycroft.volume.increase' '{"play_sound": True}'
Enclosure Volume down
Data:
{"play_sound": True}
Producer | Consumer |
| Volume Skill |
Usage:
...def initialize(self):self.add_event('mycroft.volume.decrease',self.handler_mycroft_volume_decrease)def handler_mycroft_volume_decrease(self, message):# code to excecute when mycroft.volume.decrease message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.decrease',{"play_sound": True}))...
python3 -m mycroft.messagebus.send 'mycroft.volume.decrease' '{"play_sound": True}'
Enclosure Volume muted
Data:
{"speak_message": True}
Producer | Consumer |
skill-naptime | Volume Skill |
Usage:
...def initialize(self):self.add_event('mycroft.volume.mute',self.handler_mycroft_volume_mute)def handler_mycroft_volume_mute(self, message):# code to excecute when mycroft.volume.mute message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.mute',{"speak_message": True}))...
python3 -m mycroft.messagebus.send 'mycroft.volume.mute' '{"speak_message": True}'
Enclosure Volume unmuted
Data:
{"speak_message": True}
Producer | Consumer |
skill-naptime | Volume Skill |
Usage:
...def initialize(self):self.add_event('mycroft.volume.unmute',self.handler_mycroft_volume_unmute)def handler_mycroft_volume_unmute(self, message):# code to excecute when mycroft.volume.unmute message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.unmute',{"speak_message": True}))...
python3 -m mycroft.messagebus.send 'mycroft.volume.unmute' '{"speak_message": True}'
Set enclosure volume (0.0 = no output, 1.0 = loudest possible)
Data:
{"percent": float}
Producer | Consumer |
| Volume Skill |
Usage:
...def initialize(self):self.add_event('mycroft.volume.set',self.handler_mycroft_volume_set)def handler_mycroft_volume_set(self, message):# code to excecute when mycroft.volume.set message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.set',{"percent": float}))...
python3 -m mycroft.messagebus.send 'mycroft.volume.set' '{"percent": float}'
Request volume level
Usage:
...def initialize(self):self.add_event('mycroft.volume.get',self.handler_mycroft_volume_get)def handler_mycroft_volume_get(self, message):# code to excecute when mycroft.volume.get message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.get'))...
python3 -m mycroft.messagebus.send 'mycroft.volume.get'
Data:
{"percent": <volume percentage>,"muted": <true/false>}
Producer | Consumer |
| Enclosure (skill-mark-2) |
Usage:
...def initialize(self):self.add_event('mycroft.volume.get.response',self.handler_mycroft_volume_get_response)def handler_mycroft_volume_get_response(self, message):# code to excecute when mycroft.volume.get.response message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.get.response',{"percent": <volume percentage>,"muted": <true/false>}))...
python3 -m mycroft.messagebus.send 'mycroft.volume.get.response' '{ "percent": <volume percentage>, "muted": <true/false>}'
Reduce the volume level temporarily
Producer | Consumer |
| Enclosure (skill-mark-2) |
Usage:
...def initialize(self):self.add_event('mycroft.volume.duck',self.handler_mycroft_volume_duck)def handler_mycroft_volume_duck(self, message):# code to excecute when mycroft.volume.duck message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.duck'))...
python3 -m mycroft.messagebus.send 'mycroft.volume.duck'
Restore the volume level
Producer | Consumer |
| Enclosure (skill-mark-2) |
Usage:
...def initialize(self):self.add_event('mycroft.volume.unduck',self.handler_mycroft_volume_unduck)def handler_mycroft_volume_unduck(self, message):# code to excecute when mycroft.volume.unduck message detected......
...def some_method(self):self.bus.emit(Message('mycroft.volume.unduck'))...
python3 -m mycroft.messagebus.send 'mycroft.volume.unduck'
Data:
{handler: class/function name}
Usage:
...def initialize(self):self.add_event('mycroft.skill.handler.start',self.handler_mycroft_skill_handler_start)def handler_mycroft_skill_handler_start(self, message):# code to excecute when mycroft.skill.handler.start message detected......
...def some_method(self):self.bus.emit(Message('mycroft.skill.handler.start',{handler: class/function name}))...
python3 -m mycroft.messagebus.send 'mycroft.skill.handler.start' '{handler: class/function name}'
Usage:
...def initialize(self):self.add_event('mycroft.skill.handler.complete',self.handler_mycroft_skill_handler_complete)def handler_mycroft_skill_handler_complete(self, message):# code to excecute when mycroft.skill.handler.complete message detected......
...def some_method(self):self.bus.emit(Message('mycroft.skill.handler.complete'))...
python3 -m mycroft.messagebus.send 'mycroft.skill.handler.complete'
Enable disabled intent
Data:
{"intent_name": "name"}
Producer | Consumer |
|
|
Usage:
...def initialize(self):self.add_event('mycroft.skill.enable_intent',self.handler_mycroft_skill_enable_intent)def handler_mycroft_skill_enable_intent(self, message):# code to excecute when mycroft.skill.enable_intent message detected......
...def some_method(self):self.bus.emit(Message('mycroft.skill.enable_intent',{"intent_name": "name"}))...
python3 -m mycroft.messagebus.send 'mycroft.skill.enable_intent' '{"intent_name": "name"}'
Disable intent
Data:
{"intent_name": "name"}
Producer | Consumer |
|
|
Usage:
...def initialize(self):self.add_event('mycroft.skill.disable_intent',self.handler_mycroft_skill_disable_intent)def handler_mycroft_skill_disable_intent(self, message):# code to excecute when mycroft.skill.disable_intent message detected......
...def some_method(self):self.bus.emit(Message('mycroft.skill.disable_intent',{"intent_name": "name"}))...
python3 -m mycroft.messagebus.send 'mycroft.skill.disable_intent'