def register_vocabulary(self, entity, entity_type): """ Register a word to an keyword Args: entity: word to register entity_type: Intent handler entity to tie the word to """ self.emitter.emit(Message('register_vocab', { 'start': entity, 'end': to_alnum(self.skill_id) + entity_type }))
def set_context(self, context, word=''): """ Add context to intent service Args: context: Keyword word: word connected to keyword """ if not isinstance(context, str): raise ValueError('context should be a string') if not isinstance(word, str): raise ValueError('word should be a string') context = to_alnum(self.skill_id) + context self.emitter.emit(Message('add_context', {'context': context, 'word': word}))
def unmunge_message(message, skill_id): """Restore message keywords by removing the Letterified skill ID. Arguments: message (Message): Intent result message skill_id (str): skill identifier Returns: Message without clear keywords """ if isinstance(message, Message) and isinstance(message.data, dict): skill_id = to_alnum(skill_id) for key in list(message.data.keys()): if key.startswith(skill_id): # replace the munged key with the real one new_key = key[len(skill_id):] message.data[new_key] = message.data.pop(key) return message
def unmunge_message(message, skill_id): """Restore message keywords by removing the Letterified skill ID. Args: message (Message): Intent result message skill_id (str): skill identifier Returns: Message without clear keywords """ if isinstance(message, Message) and isinstance(message.data, dict): skill_id = to_alnum(skill_id) for key in message.data: if key[:len(skill_id)] == skill_id: new_key = key[len(skill_id):] message.data[new_key] = message.data.pop(key) return message
def hack_enable_intent(self, intent_name): # THIS IS HACKING AROUND A BUG IN 0.9.17's enable_intent() for (name, intent) in self.registered_intents: if name == intent_name: self.registered_intents.remove((name, intent)) intent.name = name # Hackery - clean up the name of intent pieces munged = to_alnum(self.skill_id) req = [] for i in intent.requires: if munged in i[0]: req.append((i[0].replace(munged, ""), i[1].replace(munged, ""))) else: req.append(i) intent.requires = req self.register_intent(intent, None) break