class BotActions(object): """ An object of a veganBuddy bot. """ def __init__(self, access_token, general_configurations): self.general_configurations = general_configurations self.access_token = access_token self.actions = { 'send': self.send, 'get_nutrition_value': NutritionValues.get_nutrition_value, } self.client = Wit(access_token=self.access_token, actions=self.actions) self.client.interactive() @staticmethod def send(request, response): print response['text'] @staticmethod def first_entity_value(entities, entity): if entity not in entities: return None val = entities[entity][0]['value'] if not val: return None return val['value'] if isinstance(val, dict) else val
def main(): db.setup() client = Wit(TOKEN, URL) last_update_id = None while True: updates = get_updates(last_update_id) if len(updates["result"]) > 0: last_update_id = get_last_update_id(updates) + 1 handle_updates(updates) time.sleep(0.5) client.interactive()
def main(): if len(sys.argv) != 2: print('usage: python ' + sys.argv[0] + ' <wit-token>') exit(1) access_token = sys.argv[1] def send(request, response): print(response['text']) actions = { 'send': send, } client = Wit(access_token=access_token, actions=actions) client.interactive()
from wit import Wit def send(request, response): print('Bot responde: {}'.format(response['text'])) actions = { 'send': send, } ACCESS_TOKEN = 'BYP2LLV64PDAUH2KPNRHN2T7ICZUGDHV' client = Wit(access_token=ACCESS_TOKEN, actions=actions) client.interactive()
celebrity = first_entity_value(entities, 'notable_person') if celebrity: # We can call the wikidata API using the wikidata ID for more info return wikidata_description(celebrity) elif greetings: return 'Hi! You can say something like "Tell me about Beyonce"' else: return "Um. I don't recognize that name. " \ "Which celebrity do you want to learn about?" def wikidata_description(celebrity): try: wikidata_id = celebrity['external']['wikidata'] except KeyError: return 'I recognize %s' % celebrity['name'] rsp = get( 'https://www.wikidata.org/w/api.php', { 'ids': wikidata_id, 'action': 'wbgetentities', 'props': 'descriptions', 'format': 'json', 'languages': 'en' }).json() description = rsp['entities'][wikidata_id]['descriptions']['en']['value'] return 'ooo yes I know %s -- %s' % (celebrity['name'], description) client = Wit(access_token=access_token) client.interactive(handle_message=handle_message)
def wit_interactive(self): client = Wit(access_token=self.WIT_TOKEN) client.interactive()
from wit import Wit import os client = Wit(os.environ.get('WITAI_ACCESS_TOKEN')) client.interactive()
if not val: return None return val['value'] if isinstance(val, dict) else val def select_joke(category): jokes = all_jokes[category or 'default'] shuffle(jokes) return jokes[0] def handle_message(response): entities = response['entities'] get_joke = first_entity_value(entities, 'getJoke') greetings = first_entity_value(entities, 'greetings') category = first_entity_value(entities, 'category') sentiment = first_entity_value(entities, 'sentiment') if get_joke: return select_joke(category) elif sentiment: return 'Glad you liked it.' if sentiment == 'positive' else 'Hmm.' elif greetings: return 'Hey this is joke bot :)' else: return 'I can tell jokes! Say "tell me a joke about tech"!' client = Wit(access_token=access_token) client.interactive(handle_message=handle_message)
elif (entity_contains(entities, "judge")): context = judge(request) elif (entity_contains(entities, "sentence_type") or entity_contains(entities, "get_info")): context = get_info(request) elif (entity_contains(entities, "want_more_info")): context = more_info(request) elif (entity_contains(entities, "exit_greeting")): judge(request) context['response_text'] = data["states"]["JUDGE"]["exit"] if verbose: print(data["states"]["JUDGE"]["exit"]) sys.exit() #print("## RSP:") #print(context['response_text']) return context['response_text'] ################################################################### # client = Wit(access_token=access_token, actions=actions) client = Wit(access_token=access_token) client.interactive(handleMessage) #client.interactive()