def handle_message(self, event, context):
        message = event.get('content')

        if '비트코인' in message:
            self.send_message('비트코인')
            self.send_message(coin_detail('btc_krw'))
            msg = Message(event).set_text('비트코인 캐시를 조회하시겠습니까?') \
                .add_quick_reply('캐시')
            self.send_message(msg)
        elif '캐시' in message:
            self.send_message('비트코인 캐시')
            self.send_message(coin_detail('bch_krw'))
        elif '이더리움' in message:
            self.send_message('이더리움')
            self.send_message(coin_detail('eth_krw'))
            msg = Message(event).set_text('이더리움 클래식을 조회하시겠습니까?') \
                                .add_quick_reply('클래식')
            self.send_message(msg)
        elif '리플' in message:
            self.send_message('리플')
            self.send_message('리플은 오류로 인해 조회할 수 없습니다.')
            self.send_message(coin_detail('xrp_krw'))
        elif '이오스' in message:
            self.send_message('이오스')
            self.send_message(coin_detail('eos_krw'))
        elif '라이트' in message:
            self.send_message('라이트 코인')
            self.send_message(coin_detail('ltc_krw'))
        elif '클래식' in message:
            self.send_message('이더리움 클래식')
            self.send_message(coin_detail('etc_krw'))
        else:
            self.send_message(message, ' 은(는) 아직 준비되지 않았습니다. 기다려주세요.')
Beispiel #2
0
    def whole_reservation(self, event, message):
        answer = self.get_project_data().get(
            message)  #Properties에 저장된 message를 저장
        msg = Message(event).set_text(answer.get('answer'))
        if answer.get('link'):  #Properties에 저장된 link를 불러옴
            msg.add_url_button(answer.get('title'), answer.get('link'))

        self.send_message(msg)
Beispiel #3
0
    def send_menu(self, event):
        menu = self.get_project_data()['menu']
        names = [name for name in menu.keys()]

        message = Message(event).set_text('어떤 음료를 원하시나요?')
        for name in names:
            message.add_postback_button(name, '/show {}'.format(name))
        self.send_message(message)
Beispiel #4
0
 def send_error_message(self, event):
     menu = self.get_project_data().get('set_menu').split(
         ',')  #bothub Properties 메뉴 생성
     message = Message(event).set_text('죄송합니다.ㅠ_ㅠ\n'\
                                       '무슨 말씀인지 이해를 못했어요.\n'\
                                       '다시 한번 입력해주세요.')
     for item in menu:
         message.add_keyboard_button(item)  #키보드 버튼 생성
     self.send_message(message)
Beispiel #5
0
    def send_menu(self, event):
        menu = self.get_project_data()['menu']
        names = [name for name in menu.keys()]
        message = Message(event).set_text('What kind of juice would you like?')

        for name in names:
            message.add_postback_button(name, '/show {}'.format(name))

        self.send_message(message)
    def recognize(self, event, context):
        response = self.nlu('apiai').ask(event=event)
        action = response.action

        message = Message(event)

        if action.intent == 'input.unknown':
            return False

        # if not action.completed:
        #     message.set_text(response.next_message)
        #     self.send_message(message)
        #     return True

        if action.intent == 'hit-movies':
            message.set_text(response.next_message)
            self.send_message(message)
            self.send_box_office(event, context, [])
            return True

        if action.intent == 'movie-sentiment':
            message.set_text(response.next_message)
            self.send_message(message)
            params = action.parameters
            # self.send_order(event, context, (params['menu'], params['quantity']))
            message2 = Message(event).set_text(params['movie-name'])
            self.send_message(message2)
            return True

        message.set_text(response.next_message)
        self.send_message(message)
        return True
Beispiel #7
0
    def send_menu(self, event):
        # bothub studio 의 project property 의 menu 값을 가져온다
        menu = self.get_project_data()['menu']
        # menu 에서 key 값(name)만 받아와 names 에 저장
        names = [name for name in menu.keys()]
        message = Message(event).set_text('어떤 음료를 원하세요?')

        # 버튼으로 메뉴를 하나하나 보여줌
        for name in names:
            message.add_postback_button(name, '/show {}'.format(name))

        self.send_message(message)
Beispiel #8
0
    def set_pool6(self, event, context, **kwargs):
        q1 = kwargs.get('question1')  #slots id 와 대응
        q2 = kwargs.get('question2')

        sql = "select * from meeting where name=%s and id=%s"  #이름과 예약번호가 일치하는지 확인하는 query

        cur.execute(sql, (q1, q2))
        rows = cur.fetchall()

        if (str(rows) == "()"):  #일치하는 query가 없을 때
            menu = self.get_project_data().get('set_menu').split(
                ',')  #bothub Properties 메뉴 생성
            message = Message(
                event).set_text('\'' + q1 + '\'님의 예약번호 ' + '\'' + q2 +
                                '\'번 예약 내역이 없습니다.\n다시 한번 입력해주세요.')
            for item in menu:
                message.add_keyboard_button(item)  #키보드 버튼 생성

            self.send_message(message)
        else:  #일치하는 query가 있을 때
            sql = "delete from meeting where name=%s and id=%s"  #일치하는 이름과 회원번호를 지우는 query

            cur.execute(sql, (q1, q2))
            db.commit()

            menu = self.get_project_data().get('set_menu').split(
                ',')  #bothub Properties 메뉴 생성
            message = Message(event).set_text('\'' + q1 + '\'님의 예약번호 \'' + q2 +
                                              '\'번 예약이 취소되었습니다.')

            for item in menu:
                message.add_keyboard_button(item)  #키보드 버튼 생성

            self.send_message(message)
Beispiel #9
0
 def on_help(self, event, context):
     message = Message(event)
     message.set_text('Let me tell you what can I do.')
     message.add_postback_button('Stack List', '/stacks')
     message.add_postback_button('Layer List', '/layers')
     message.add_postback_button('Deploy', '/deploy')
     self.send_message(message)
Beispiel #10
0
    def send_chatroom_welcome_message(self, event):
        menu = self.get_project_data().get('set_menu').split(
            ',')  #bothub Properties 메뉴 생성
        self.remember_chatroom(event)  #id를 저장하는 함수로 이동
        message = Message(event).set_text('처음뵙겠습니다. 저는 회의실을 예약하는 챗봇입니다. ^_^\n무엇을 도와드릴까요?\n\n'\
                                          '1. 회의실 예약\n'\
                                          '2. 날짜별 예약 현황\n'\
                                          '3. 나의 예약 확인\n'\
                                          '4. 날짜 수정\n'\
                                          '5. 예약 취소')
        for item in menu:
            message.add_keyboard_button(item)  #키보드 버튼 생성

        self.send_message(message)
Beispiel #11
0
    def send_welcome_message(self, event):
        menu = self.get_project_data().get('set_menu').split(
            ',')  #bothub Properties 메뉴 생성
        message = Message(event).set_text('안녕하세요? 저는 회의실을 예약하는 챗봇입니다. ^-^\n무엇을 도와드릴까요?\n\n'\
                                          '1. 회의실 예약\n'\
                                          '2. 날짜별 예약 현황\n'\
                                          '3. 나의 예약 확인\n'\
                                          '4. 날짜 수정\n'\
                                          '5. 예약 취소')

        for item in menu:
            message.add_keyboard_button(item)  #키보드 버튼 생성

        self.send_message(message)
Beispiel #12
0
 def send_order(self, name, event, quantity=1):
     self.send_message('{}를 {}잔 주문했습니다. 음료가 준비되면 알려드릴께요.'.format(
         name, quantity))
     chat_id = self.get_project_data().get('chat_id')
     order_message = Message(event).set_text('{} {}잔 주문 들어왔습니다!'.format(name, quantity))\
         .add_postback_button('완료', '/done {} {}'.format(event['sender']['id'], name))
     self.send_message(order_message, chat_id=chat_id)
Beispiel #13
0
 def send_drink_done(self, content, event):
     _, sender_id, menu_name = content.split()
     self.send_message('{}가 준비되었습니다. 카운터에서 수령해주세요.'.format(menu_name), chat_id=sender_id)
     message = Message(event).set_text('저희 가게를 이용하신 경험을 말씀해주시면 많은 도움이 됩니다.')\
                             .add_quick_reply('평가하기', '/feedback')
     self.send_message(message, chat_id=sender_id)
     self.send_message('고객분께 음료 완료 알림을 전송했습니다.')
Beispiel #14
0
    def on_deploy_status(self, event, context, deploy_id):
        data = self.get_user_data()
        client = self.get_boto_client(data)

        response = client.describe_deployments(DeploymentIds=[deploy_id])
        deploy = response['Deployments'][0]

        message = Message(event)
        message.set_text('Deployment is {Status}'.format(**deploy))
        if deploy['Status'] == 'running':
            message.add_quick_reply('Deployment status',
                                    '/deploy_status {}'.format(deploy_id))
        else:
            message.add_quick_reply('Layer list', '/layers')
            message.add_quick_reply('Deploy', '/deploy')
        self.send_message(message)
Beispiel #15
0
def test_prepare_payload_should_returns_message_data():
    context = {'channel': {'channels': [{'type': 'mychannel'}]}}
    event = {}
    client = BaseChannelClient(10, 'myapikey', 'myurl', context=context)
    message = Message(event)
    data = client._prepare_payload('myid',
                                   message,
                                   channel='mychannel',
                                   event=event)
    assert data == {
        'channel': {
            'type': 'mychannel'
        },
        'receiver': 'myid',
        'context': {
            'project_id': 10,
            'api_key': 'myapikey'
        },
        'event': {},
        'extra': None,
        'message': {
            'model': [],
            'event': {}
        }
    }
 def send_welcome_message(self, event, context, args):
     message = Message(event).set_text('반가워요.\n\n'\
                                       '저는 요즘 볼만한 영화들을 알려드리고, '\
                                       '현재 계신 곳에서 가까운 영화관들의 상영시간표를 알려드려요.\n\n'
                                       "'영화순위'나 '근처 상영관 찾기'를 입력해보세요.")\
                             .add_quick_reply('영화순위', '/boxoffice')\
                             .add_quick_reply('근처 상영관 찾기', '/find')
     self.send_message(message)
Beispiel #17
0
	def send_error_message(self, event):
        message = Message(event).set_text('잘 모르겠네요.\n\n'\
                                          '저는 요즘 볼만한 영화들을 알려드리고, '\
                                          '현재 계신 곳에서 가까운 영화관들의 상영시간표를 알려드려요.\n\n'
                                          "'영화순위'나 '근처 상영관 찾기'를 입력해보세요.")\
                                .add_quick_reply('영화순위')\
                                .add_quick_reply('근처 상영관 찾기')
		self.send_message(message)
def test_add_keyboard_button_should_append_entry():
    message = Message(None).add_keyboard_button('hello')
    assert message.model == [{
        'command': 'add_keyboard_button',
        'args': {
            'text': 'hello'
        }
    }]
def test_add_template_should_append_entry():
    message = Message(None).add_template('mypayload')
    assert message.model == [{
        'command': 'add_template',
        'args': {
            'payload': 'mypayload'
        }
    }]
Beispiel #20
0
 def send_show(self, name ,event):
     menu = self.get_project_data()['menu']
     selected_menu = menu[name]
     text = '{name}는 {description}\n 가격은 {price}원 입니다.'.format(name=name, **selected_menu)
     message = Message(event).set_text(text)\
                             .add_quick_reply('{} 주문 '.format(name), '/order {}'.format(name))\
                             .add_quick_reply('메뉴보기')
     self.send_message(message)
def test_add_location_request_should_append_entry():
    message = Message(None).add_location_request('hello')
    assert message.model == [{
        'command': 'add_location_request',
        'args': {
            'text': 'hello'
        }
    }]
Beispiel #22
0
 def send_drink_done(self, content, event):
     _, sender_id, menu_name = content.split()
     self.send_message("{}가 준비되었습니다. 카운터에서 수령해주세요.".format(menu_name), chat_id=sender_id)
     message = Message(event).set_text('저희 가게를 이용하신 후 평가를 해주세요')\
                             .add_quick_reply('평가하기','/feedback')
     self.send_message(message, chat_id=sender_id)
     # chat_id=sender_id : 요청을 보낸 사람의 id, 고객에게 대답 전송
     self.send_message('고객분께 음료 완료 알림을 전송했습니다.')
Beispiel #23
0
    def on_use_stack(self, event, context, stack_id, stack_name):
        data = self.get_user_data()
        data['stack_id'] = stack_id
        self.set_user_data(data)

        message = Message(event)
        message.set_text('Use stack {} now'.format(stack_name))
        message.add_postback_button('Layer list', '/layers')
        message.add_postback_button('Deploy', '/deploy')
        self.send_message(message)
Beispiel #24
0
 def send_drink_done(self, content, event):
     _, sender_id, menu_name = content.split()
     self.send_message(
         '{} is ready. Please take your drinks.'.format(menu_name),
         chat_id=sender_id)
     message = Message(event).set_text('Let us know how we did.')\
                             .add_quick_reply('Evaluate', '/feedback')
     self.send_message(message, chat_id=sender_id)
     self.send_message('Customer was notified to pick up drinks.')
Beispiel #25
0
 def send_welcome_message(self, event):
     message = Message(event).set_text('안녕하세요. 오늘을 함께할 cs496  채팅 봇입니다.\n ' +
     '시작가능하신 명령어로 \'영화순위\' ,  \'근처 상영관 찾기\' ,\'메뉴\', \'날씨\', \'매드캠프\'가 있습니다. ')\
     .add_quick_reply('영화순위')\
     .add_quick_reply('근처 상영관 찾기')\
     .add_quick_reply('메뉴보기')\
     .add_quick_reply('날씨')\
     .add_quick_reply('매드캠프')
     self.send_message(message)
Beispiel #26
0
 def send_show(self, name, event):
     menu = self.get_project_data()['menu']
     selected_menu = menu[name]
     text = '{name}는 {description}\n가격은 {price}원이예요.'.format(
         name=name, **selected_menu)
     message = Message(event).set_text(text)\
         .add_postback_button('{} 주문'.format(name), payload = '/order {}'.format(name))\
         .add_postback_button('메뉴보기', '메뉴보기')
     self.send_message(message)
def test_set_text_with_markdown_should_append_entry():
    message = Message(None).set_text(HTML('hello'))
    assert message.model == [{
        'command': 'set_text',
        'args': {
            'text': 'hello',
            'markup': 'html'
        }
    }]
def test_add_postback_button_should_append_entry():
    message = Message(None).add_postback_button('hello', 'mypayload')
    assert message.model == [{
        'command': 'add_postback_button',
        'args': {
            'text': 'hello',
            'payload': 'mypayload'
        }
    }]
def test_set_text_should_append_entry():
    message = Message(None).set_text('hello')
    assert message.model == [{
        'command': 'set_text',
        'args': {
            'text': 'hello',
            'markup': None
        }
    }]
Beispiel #30
0
    def set_pool4(self, event, context, **kwargs):
        try:
            q1 = kwargs.get('question1')  #slots id 와 대응
            q2 = kwargs.get('question2')

            sql = "select * from meeting where id=%s and name=%s"  #예약번호와 이름이 일치하는지 확인하는 query

            cur.execute(sql, (q2, q1))
            rows = cur.fetchall()

            for row in rows:
                global meetingRoom2  #예약 정보를 set_pool7으로 넘겨주기 위해 global 변수 선언
                global id2
                global name2

                meetingRoom2 = row['meetingRoom']
                id2 = row['id']
                name2 = row['name']

        #각 column에 맞지 않는 데이터가 들어갔을 때
        except:
            '''
            menu = self.get_project_data().get('set_menu').split(',') #bothub Properties 메뉴 생성
            message = Message(event).set_text('예약번호가 올바르지 않습니다.\n다시 한번 입력해주세요.')
                    
            for item in menu:
                message.add_keyboard_button(item) #키보드 버튼 생성
               
            self.send_message(message)
            '''
        else:
            if (str(rows) == "()"):  #예약번호와 이름이 일치하는 query가 없을 때
                menu = self.get_project_data().get('set_menu').split(
                    ',')  #bothub Properties 메뉴 생성
                message = Message(
                    event).set_text('\'' + q1 + '\'님의 예약번호 ' + '\'' + q2 +
                                    '\'번 예약 내역이 없습니다.\n다시 한번 입력해주세요.')
                for item in menu:
                    message.add_keyboard_button(item)  #키보드 버튼 생성

                self.send_message(message)

            else:  #중복확인 query에서 중복되는 값이 안나왔을 때
                self.modify_data(event, context)