Beispiel #1
0
    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
        }))
Beispiel #2
0
    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
Beispiel #4
0
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