Yang's Schedule Bot

Made by Yang Yang

Found in SMS Bot

This is Yang's MeBot who manages Yang's schedule at CMU.

0

Intention

This is my first attempt of trying to create a MeBot. It reflects my personality and manages my schedule.

0

Context

"Conversational UI" "Bot"

0

Product

Try to talk to 'Yang's MeBot' at (412)500-9223

Yang's MeBot is a simple bot that manages my class schedule at CMU. It greets people who text to it in the languages that I speak. Plus, it will tell my friends what class I am having on a specific day and give them a hint of where to find me.

0
require 'sinatra'
require "sinatra/reloader" if development?

require 'twilio-ruby'


enable :sessions

configure :development do
  require 'dotenv'
  Dotenv.load
end

# create a twilio client using your account info
@client = Twilio::REST::Client.new ENV["TWILIO_ACCOUNT_SID"], ENV["TWILIO_AUTH_TOKEN"]

get "/" do
	404
end

  get "/sms/incoming" do
    
         body = params[:Body] || ""
         body = body.downcase.strip
      
         message = ""
         media = nil
      
    #Greeting & Intro & Tell what I do
    
   
    
    GREETINGS = ["Hi,", "Hey,", "Ni Hao,", "Hej,", "Aloha,", "Hello,", "Hola,", "Nei Hou,"]
    INTROS = ["I'm Yang's MeBot.", "You're talking to Yang's MeBot.", "I manage Yang's schedule."]
    
    COMMANDS_OPTIONS = ["Ask me Yang's schedule by typing 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'.", "Ask me 'Monday', 'Tuesday' etc. to see Yang's schedule at CMU."]
    APOLOGIES = ["I didn't catch that.", "Hmmm I don't know that.", "What did you say to me?"]
    
    
    CASUAL_INTENTS = ["hi", "hello", "hey", "ni hao", "hej", "hola", "nei hou", "aloha"]
    
    #Get yang's schedule
    
    MONDAY_WEDNESDAY_SCHEDULE = ["Yang will be at studio in the morning. She has 'Business Fundamental' class in the afternoon and 'Design for Manufacturing' class in the evening", "Yang doesn't have class in the morning, she goes to 'Business Fundamental' class in the afternoon, and 'Design for Manufacturing' class in the evening."]
    TUESDAY_THURSDAY_SCHEDULE = ["In the morning, she has 'IPD Method' class. In the afternoon, she has 'Programming for Online Prototype' class and 'Engineering Design Fundamental' class.", "That will be a busy day for her, she has 'IPD Methods' in the morning, 'Programming for Online Prototype' in the afternoon followed by 'Engineering Design Fundamental'."]
    FRIDAY_SCHEDULE = ["Yang goes to 'Career Planning' class and 'Institute Seminar' in the morning. In the afternoon, she is free."]
    WEEKEND_SCHEDULE = ["She needs some sleep.", "Yang probably will be working in the studio.", "She is alway from this planet that day.", "Yang loves to work on her secret projects during weekend.", "She would love to stay in bed on that day."]
    
    TREAT_FOR_YANG_WEEKDAY = ["It a busy day, she would love some one buy her a coffee.", "Try to meet her at her studio."]
    
    
    def get_greeting  
      GREETINGS.sample + " " + " Yang is busy studying at CMU." + " " + INTROS.sample
    end
    
    def get_misunderstanding
      APOLOGIES.sample + " " + COMMANDS_OPTIONS.sample
    end
    
      session[:counter] ||=1
      message = get_greeting + " " + COMMANDS_OPTIONS.sample
      session[:counter] +=1
      
    if session[:counter] > 1 and body == "monday"
      message = MONDAY_WEDNESDAY_SCHEDULE.sample + TREAT_FOR_YANG_WEEKDAY.sample
      session[:counter] +=1
    elsif session[:counter] > 1 and body == "wednesday"
      message = MONDAY_WEDNESDAY_SCHEDULE.sample + TREAT_FOR_YANG_WEEKDAY.sample
      session[:counter] +=1
    elsif session[:counter] > 1 and body == "tuesday"
      message = TUESDAY_THURSDAY_SCHEDULE.sample + TREAT_FOR_YANG_WEEKDAY.sample
      session[:counter] +=1
    elsif session[:counter] > 1 and body == "thursday"
      message = TUESDAY_THURSDAY_SCHEDULE.sample + TREAT_FOR_YANG_WEEKDAY.sample
      session[:counter] +=1
    elsif session[:counter] > 1 and body == "friday"
      message = FRIDAY_SCHEDULE.sample + TREAT_FOR_YANG_WEEKDAY.sample
      session[:counter] +=1
    elsif session[:counter] > 1 and body == "saturday"
      message = WEEKEND_SCHEDULE.sample
      session[:counter] +=1
    elsif session[:counter] > 1 and body == "sunday"
      message = WEEKEND_SCHEDULE.sample
      session[:counter] +=1
    else
      message = get_misunderstanding
      session[:counter] +=1
    end
    
    #End the conversation or start another inquiry
  
    twiml = Twilio::TwiML::MessagingResponse.new do |r|
      r.message do |m|
        m.body( message )
        unless media.nil?
          m.media( media )
        end
      end 
    end

  
    content_type 'text/xml'
    twiml.to_s
    
  end
Click to Expand
x
Share this Project

This project is only accessible by signed in users. Be considerate and think twice before sharing.


Found In
Courses

49714 Programming for Online Prototypes

· 15 members

A hands on introduction to building online products and services through code


About

This is Yang's MeBot who manages Yang's schedule at CMU.

Created

September 21st, 2017