예제 #1
0
def start(args):

    if args["server"]:
        api.Run(nlp, userin, args["server"])
        if Config.TWITTER_CONSUMER_KEY != 'CONSUMER_KEY':
            auth = OAuthHandler(Config.TWITTER_CONSUMER_KEY,
                                Config.TWITTER_CONSUMER_SECRET)
            auth.set_access_token(Config.TWITTER_ACCESS_KEY,
                                  Config.TWITTER_ACCESS_SECRET)
            userin.twitter_api = tweepy.API(auth)

            print("Listening Twitter mentions...")
            l = MentionListener(args)
            stream = Stream(auth, l)
            stream.filter(track=['DragonfireAI'], async=True)
    elif args["cli"]:
        while (True):
            com = raw_input("Enter your command: ")
            thread.start_new_thread(VirtualAssistant.command, (com, args))
            time.sleep(0.5)
    elif args["gspeech"]:
        from dragonfire.sr.gspeech import GspeechRecognizer
        recognizer = GspeechRecognizer()
        recognizer.recognize(args)
    else:
        from dragonfire.sr.deepspeech import DeepSpeechRecognizer
        recognizer = DeepSpeechRecognizer()
        recognizer.recognize(args)
예제 #2
0
def start(args, userin):
    """Function that starts the virtual assistant with the correct mode according to command-line arguments.

    Args:
        args:       Command-line arguments.
        userin:     :class:`dragonfire.utilities.TextToAction` instance.
    """

    if args["db"] == "mysql":
        engine = create_engine('mysql+pymysql://' + Config.MYSQL_USER + ':' +
                               Config.MYSQL_PASS + '@' + Config.MYSQL_HOST +
                               '/' + Config.MYSQL_DB)
    else:
        engine = create_engine('sqlite:///dragonfire.db',
                               connect_args={'check_same_thread': False},
                               echo=True)
    Base.metadata.create_all(engine)
    Base.metadata.bind = engine
    DBSession = sessionmaker(bind=engine)
    db_session = DBSession()
    learner.db_session = db_session

    if args["server"]:
        import dragonfire.api as API  # API of Dragonfire
        import tweepy  # An easy-to-use Python library for accessing the Twitter API
        from tweepy import OAuthHandler
        from tweepy import Stream
        from dragonfire.twitter import MentionListener

        if Config.TWITTER_CONSUMER_KEY != 'CONSUMER_KEY':
            auth = OAuthHandler(Config.TWITTER_CONSUMER_KEY,
                                Config.TWITTER_CONSUMER_SECRET)
            auth.set_access_token(Config.TWITTER_ACCESS_KEY,
                                  Config.TWITTER_ACCESS_SECRET)
            userin.twitter_api = tweepy.API(auth)

            print("Listening Twitter mentions...")
            l = MentionListener(args, userin)
            stream = Stream(auth, l)
            stream.filter(track=['DragonfireAI'], is_async=True)
        API.Run(nlp, learner, odqa, dc, coref, userin, args["server"],
                args["port"], db_session)
    else:
        global user_full_name
        global user_prefix
        if args["cli"]:
            her = VirtualAssistant(args, userin, user_full_name, user_prefix)
            while (True):
                com = raw_input("Enter your command: ")
                thread.start_new_thread(her.command, (com, ))
                time.sleep(0.5)
        else:
            from dragonfire.sr import SpeechRecognizer
            her = VirtualAssistant(args, userin, user_full_name, user_prefix)
            if args["gspeech"]:
                recognizer = SpeechRecognizer('gspeech')
            else:
                recognizer = SpeechRecognizer('deepspeech')
            recognizer.recognize(her)
예제 #3
0
def start(args, userin):
    """Function that starts the virtual assistant with the correct mode according to command-line arguments.

    Args:
        args:       Command-line arguments.
        userin:     :class:`dragonfire.utilities.TextToAction` instance.
    """

    if args["server"]:
        import dragonfire.api as API  # API of Dragonfire
        import tweepy  # An easy-to-use Python library for accessing the Twitter API
        from tweepy import OAuthHandler
        from tweepy import Stream
        from dragonfire.twitter import MentionListener

        if Config.TWITTER_CONSUMER_KEY != 'CONSUMER_KEY':
            auth = OAuthHandler(Config.TWITTER_CONSUMER_KEY,
                                Config.TWITTER_CONSUMER_SECRET)
            auth.set_access_token(Config.TWITTER_ACCESS_KEY,
                                  Config.TWITTER_ACCESS_SECRET)
            userin.twitter_api = tweepy.API(auth)

            print("Listening Twitter mentions...")
            l = MentionListener(args, userin)
            stream = Stream(auth, l)
            stream.filter(track=['DragonfireAI'], async=True)
        API.Run(nlp, learner, omniscient, dc, coref, userin, args["server"],
                args["port"])
    else:
        global user_full_name
        global user_prefix
        if args["cli"]:
            her = VirtualAssistant(args, userin, user_full_name, user_prefix)
            while (True):
                com = raw_input("Enter your command: ")
                thread.start_new_thread(her.command, (com, ))
                time.sleep(0.5)
        elif args["gspeech"]:
            from dragonfire.sr.gspeech import GspeechRecognizer

            recognizer = GspeechRecognizer()
            recognizer.recognize(args, userin, user_full_name, user_prefix)
        else:
            from dragonfire.sr.deepspeech import DeepSpeechRecognizer

            recognizer = DeepSpeechRecognizer()
            recognizer.recognize(args, userin, user_full_name, user_prefix)
예제 #4
0
PORT = 3301
API_SERVER = 'http://*****:*****@' + Config.MYSQL_HOST + '/' + Config.MYSQL_DB)
else:
    engine = create_engine('sqlite:///dragonfire.db', connect_args={'check_same_thread': False}, echo=True)
Base.metadata.create_all(engine)
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
db_session = DBSession()
dragonfire.learner.db_session = db_session
dragonfire.learner.is_server = True

api_ref = API.Run(dragonfire.nlp, dragonfire.learner, dragonfire.omniscient, dragonfire.dc, dragonfire.coref, dragonfire.userin, REG_KEY, PORT, db_session, dont_block=True)
time.sleep(5)


@pytest.fixture
def token():
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    url = API_SERVER + '/register'
    params = {'name': 'John', 'gender': 'M', 'birth_date': '1990-01-01', 'reg_key': REG_KEY}
    response = requests.post(url, params=params, headers=headers)
    return json.loads(response.text)['token']


def test_api_tagger_end(token):
    headers = {'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': token}
    url = API_SERVER + '/tag'