# How to call rasa from an existing assistant

**URL:** <https://forum.rasa.com/t/how-to-call-rasa-from-an-existing-assistant/20946>\
**Category:** Rasa Open Source\
**Created:** [November 6, 2019, 3:04am UTC](https://forum.rasa.com/t/how-to-call-rasa-from-an-existing-assistant/20946 "2019-11-06T03:04:21Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![MikeyBeez](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/mikeybeez/32/5825_2.png) [@MikeyBeez](https://forum.rasa.com/u/MikeyBeez)\
**Post date:** [November 6, 2019, 3:04am UTC](https://forum.rasa.com/t/how-to-call-rasa-from-an-existing-assistant/20946/1 "2019-11-06T03:04:21Z")

</div>

How do I call rasa from this code snippet?

from gtts import gTTS import speech\_recognition as sr import os

# import re

import webbrowser import smtplib

# import requests

# from weather import Weather

def talkToMe(audio): # “speaks audio passed as argument”

```
print(audio)
for line in audio.splitlines():
    os.system("say " + audio)

# use the system's inbuilt say command instead of mpg123
# text_to_speech = gTTS(text=audio, lang='en')
# text_to_speech.save('audio.mp3')
# os.system('mpg123 audio.mp3')

```

def myCommand(): # “listens for commands”

```
r = sr.Recognizer()

with sr.Microphone() as source:
    print('Ready...')
    r.pause_threshold = 1
    r.adjust_for_ambient_noise(source, duration=1)
    audio = r.listen(source)

try:
    command = r.recognize_google(audio).lower()
    print('You said: ' + command + '\n') How can I call rasa here?

#loop back to continue to listen for commands if unrecognizable speech is received
except sr.UnknownValueError:
    print('Your last command couldn\'t be heard')
    command = myCommand();

return command

```

def assistant(command): “if statements for executing commands”

```
if 'open reddit' in command:
    reg_ex = re.search('open reddit (.*)', command)
    url = 'https://www.reddit.com/'
    if reg_ex:
        subreddit = reg_ex.group(1)
        url = url + 'r/' + subreddit
    webbrowser.open(url)
    print('Done!')

elif 'open website' in command:
    reg_ex = re.search('open website (.+)', command)
    if reg_ex:
        domain = reg_ex.group(1)
        url = 'https://www.' + domain
        webbrowser.open(url)
        print('Done!')
    else:
        pass

elif 'what\'s up' in command:
    talkToMe('Just doing my thing')
# elif 'joke' in command:
# res = requests.get(
# 'https://icanhazdadjoke.com/',
# headers={"Accept":"application/json"}
# )
# if res.status_code == requests.codes.ok:
# talkToMe(str(res.json()['joke']))
# else:
# talkToMe('oops!I ran out of jokes')

# elif 'current weather in' in command:
# reg_ex = re.search('current weather in (.*)', command)
# if reg_ex:
# city = reg_ex.group(1)
# weather = Weather()
# location = weather.lookup_by_location(city)
# condition = location.condition()
# talkToMe('The Current weather in %s is %s The tempeture is %.1f degree' % (city, condition.text(), (int(condition.temp())-32)/1.8))
#
# elif 'weather forecast in' in command:
# reg_ex = re.search('weather forecast in (.*)', command)
# if reg_ex:
# city = reg_ex.group(1)
# weather = Weather()
# location = weather.lookup_by_location(city)
# forecasts = location.forecast()
# for i in range(0,3):
# talkToMe('On %s will it %s. The maximum temperture will be %.1f degree.'
# 'The lowest temperature will be %.1f degrees.' % (forecasts[i].date(), forecasts[i].text(), (int(forecasts[i].high())-32)/1.8, (int(forecasts[i].low())-32)/1.8))

elif 'email' in command:
    talkToMe('Who is the recipient?')
    recipient = myCommand()

    if 'John' in recipient:
        talkToMe('What should I say?')
        content = myCommand()

        #init gmail SMTP
        mail = smtplib.SMTP('smtp.gmail.com', 587)

        #identify to server
        mail.ehlo()

        #encrypt session
        mail.starttls()

        #login
        mail.login('username', 'password')

        #send message
        mail.sendmail('John Fisher', 'JARVIS2.0@protonmail.com', content)

        #end mail connection
        mail.close()

        talkToMe('Email sent.')

    else:
        talkToMe('I don\'t know what you mean!')

```

talkToMe(‘I am ready for your command’)

#loop to continue executing multiple commands while True: assistant(myCommand())

---

<div class="post-metadata">

**Author:** ![Juste](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/juste/32/15_2.png) [@Juste](https://forum.rasa.com/u/Juste)\
**Post date:** [November 7, 2019, 2:01pm UTC](https://forum.rasa.com/t/how-to-call-rasa-from-an-existing-assistant/20946/2 "2019-11-07T14:01:23Z")

</div>

Hey @MikeyBeez. I think I would try building a small custom connector which would define your bot’s input and output channels and connect your Rasa assistant to it. So basically, you would build your assistant with Rasa, define a custom connector like the following: [Custom Connectors](https://rasa.com/docs/rasa/user-guide/connectors/custom-connectors/). Then when you start the assistant’s server, it should listen for your input’s through the input channel you defined. There are a few tutorials where I build custom connectors. For example: [Going beyond ‘Hey Google’: building a Rasa-powered Google Assistant](https://blog.rasa.com/going-beyond-hey-google-building-a-rasa-powered-google-assistant/). Have a look and let me know if there is anything more specifically I can help.
