Example #1
0
def handle_location_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(
            title=event.message.title, address=event.message.address,
            latitude=event.message.latitude, longitude=event.message.longitude
        )
    )
Example #2
0
def isTravel(input_text, token):
    (loc_1, loc_2) = allSight(input_text)
    if loc_2:
        recommand = random.choice(loc_2)
        message = [
            TextSendMessage(text="為您隨機推薦景點"),
            LocationSendMessage(
                title=recommand[0],
                address=recommand[2],
                latitude=recommand[1][0],
                longitude=recommand[1][1],
            ),
        ]
        line_bot_api.reply_message(token, message)
        return True
    elif loc_1:
        recommand = random.choice(loc_1)
        message = [
            TextSendMessage(text="為您隨機推薦景點"),
            LocationSendMessage(
                title=recommand[0],
                address=recommand[2],
                latitude=recommand[1][0],
                longitude=recommand[1][1],
            ),
        ]
        line_bot_api.reply_message(token, message)
        return True

    elif "景點" in input_text:
        chose = TextSendMessage(
            text="哪邊的景點呢?",
            quick_reply=QuickReply(
                items=[
                    QuickReplyButton(action=MessageAction(label="北部", text="@北")),
                    QuickReplyButton(action=MessageAction(label="中部", text="@中")),
                    QuickReplyButton(action=MessageAction(label="南部", text="@南")),
                    QuickReplyButton(action=MessageAction(label="東部", text="@東")),
                    QuickReplyButton(action=MessageAction(label="離島", text="@離島")),
                ]
            ),
        )
        line_bot_api.reply_message(token, chose)
        return isTravel_2(input_text, token)
    return False
 def test_location_message(self):
     arg = {
         'title': 'my location',
         'address': '〒150-0002 東京都渋谷区渋谷2丁目21−1',
         'latitude': 35.65910807942215,
         'longitude': 139.70372892916203
     }
     self.assertEqual(self.serialize_as_dict(arg, type=self.LOCATION),
                      LocationSendMessage(**arg).as_json_dict())
Example #4
0
def push_location(userid, title="", address="", latitude=0.0, longtitude=0.0):
    try:
        message = LocationSendMessage(title=title,
                                      address=address,
                                      latitude=latitude,
                                      longtitude=longtitude)
        LINE_BOT_API.push_message(userid, message)
    except Exception as e:
        getException(e)
Example #5
0
def sendPosition(event):
	try:
		message = [
			LocationSendMessage(title='桃園市大溪區',address='335桃園市大溪區',latitude='24.8709613',longitude='121.2306069'),
			TextSendMessage(text="大溪區爲中華民國桃園市的一個市轄區,境內有大漢溪,因而得名。大溪區原為復興區的木材輸出門戶,以大漢溪爲河運管道。雖然現在河運已經不再,但當地昔日的渡船頭仍然保存,大溪爲北橫公路的入口端,因擁有豐富的觀光資源,桃園市政府持續推展生態休閒遊憩東都心之重點發展區。")
		]
		line_bot_api.reply_message(event.reply_token,message)
	except:
		line_bot_api.reply_message(event.reply_token,TextSendMessage(text = "發生錯誤!"))
Example #6
0
def handle_location(event):

    # ユーザが選択した災害の種類(辞書からkeyを取り出す)
    which_disaster_key = ""
    for key, value in disaster_dict.items():
        if value == which_disaster_value:
            which_disaster_key = key

    # 受信した位置情報(緯度・経度)から±0.05度(半径5km程度?)以内の避難場所を抽出
    from_lat = event.message.latitude - 0.05
    to_lat = event.message.latitude + 0.05
    from_lon = event.message.longitude - 0.05
    to_lon = event.message.longitude + 0.05

    df_near = df.query(f"{which_disaster_key} == '◎' & \
        lat > {from_lat} & lat < {to_lat} & \
        lon > {from_lon} & lon < {to_lon}")

    min_distance = None
    min_row = None

    # 一番近い避難場所を検索
    for index, row in df_near.iterrows():

        shelter_lat = row["lat"]
        shelter_lon = row["lon"]

        distance = calc_distance(event.message.latitude,
                                 event.message.longitude, shelter_lat,
                                 shelter_lon)
        if min_distance is None or distance < min_distance:
            min_distance = distance
            min_row = row

    # 該当する避難場所がなかった場合
    if min_distance == None:
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text="{}\n{}".format("この近くには、その災害の避難場所は登録されてないみたい…",
                                     "詳しく確認したい場合は、自治体のサイトなどを見てみてね")))

    # 該当する避難場所があった場合
    else:
        message = "{}\n「{}」\n{}\n".format("いちばん近い避難場所は", min_row["name"],
                                          "だよ" + chr(0x100001))
        message += format_disaster_info(min_row)

        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text=message),
            LocationSendMessage(
                title=f"{min_row['name']}\n(距離:{min_distance}m)",
                address=min_row['addr'],
                latitude=min_row['lat'],
                longitude=min_row['lon'])
        ])
Example #7
0
def sendPosition(event):
    try:
        message = LocationSendMessage(title='國立金門大學',
                                      address='金門縣金寧鄉大學路1號',
                                      latitude=24.44816,
                                      longitude=118.32252)
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤'))
Example #8
0
def handle_location(event):
    msg = "latitude: {}  longitude: {}".format(event.message.latitude,
                                               event.message.longitude)
    line_bot_api.reply_message(event.reply_token, [
        LocationSendMessage(title=event.message.title,
                            address=event.message.address,
                            latitude=event.message.latitude,
                            longitude=event.message.longitude),
        TextSendMessage(text=msg)
    ])
Example #9
0
def handel_location(event):
    print("event.reply_token:", event.reply_token)
    print("event.message.type:", event.message.type)
    line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(title=event.message.title,
                            address=event.message.address,
                            latitude=event.message.latitude,
                            longitude=event.message.longitude))
    return 0
Example #10
0
def reply_location(event, title="", address="", latitude=0.0, longtitude=0.0):
    try:
        message = LocationSendMessage(title=title,
                                      address=address,
                                      latitude=latitude,
                                      longtitude=longtitude)
        token = event.reply_token
        LINE_BOT_API.push_message(token, message)
    except Exception as e:
        getException(e)
Example #11
0
def sendResPosition(event):  #傳送餐廳位置
    #try:
    restaurants = restaurant.objects.all()
    index = random.randint(0, len(restaurants) - 1)
    message = LocationSendMessage(
        title=restaurants[index].cTitle,
        address=restaurants[index].cAddr,
        latitude=float(restaurants[index].cLatitude),  #緯度
        longitude=float(restaurants[index].cLongitude))
    line_bot_api.reply_message(event.reply_token, message)
Example #12
0
def handle_postback(event):
    data = parse_qs(event.postback.data)
    #print("data:"+data)
    line_bot_api.reply_message(
        event.reply_token, LocationSendMessage(
            title=data['title'][0],
            address=data['address'][0],
            latitude=data['lat'][0],
            longitude=data['lng'][0]
        )
    )
Example #13
0
    def send(self, id, text, sticker=None, location=None):
        msg = [TextSendMessage(text=text)]
        if location is not None:
            msg.append(LocationSendMessage(
                latitude=location['lat'],
                longitude=location['lng']
            ))
        if sticker is not None:
            msg.append(StickerSendMessage(package_id=3, sticker_id=sticker))

        self.api.push_message(id, msg)
Example #14
0
def sendPosition(event):  #傳送位置
    try:
        message = LocationSendMessage(
            title='101大樓',
            address='台北市信義路五段7號',
            latitude=25.034207,  #緯度
            longitude=121.564590  #經度
        )
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))
Example #15
0
 def create(
     self, quick_reply: Optional[QuickReply] = None, sender: Optional[Sender] = None
 ) -> LocationSendMessage:
     return LocationSendMessage(
         title=self.title,
         address=self.address,
         latitude=self.latitude,
         longitude=self.longitude,
         quick_reply=quick_reply,
         sender=sender,
     )
Example #16
0
def sendMap(event):
    try:
        message = LocationSendMessage(
            title='國立臺北科技大學',
            address='10608台北市大安區忠孝東路三段1號',
            latitude=25.04353847631958,  #緯度
            longitude=121.53769576931987  #經度25.04353847631958, 121.53769576931987
        )
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text='發生錯誤!'))  #傳送位置
Example #17
0
def handle_message(event):
    
    event_mst={"arrive1":"event1","arrive2":"event2"}
    
    pos={
    "event1":("鶴ヶ城","〒965-0873福島県会津若松市追手町1-1",37.48772, 139.929794,"馬刺し一貫サービス"),
    "event2":("会津若松市役所","〒965-0035",37.48772,139.929794,"飛露喜プレゼント")}
    if event.message.text in pos:
        line_bot_api.reply_message(
            event.reply_token,
            [
                LocationSendMessage(
                    title     = pos[event.message.text][0],
                    address   = pos[event.message.text][1],
                    latitude  = pos[event.message.text][2],
                    longitude = pos[event.message.text][3]
                ),
                TextSendMessage(text=pos[event.message.text][0]+"を訪れた方へ"+"先着"+str(r.get(event.message.text))+"名様に"+pos[event.message.text][4]+"!!")
            ]
        )
    
    message1="合言葉は「ならぬことはならぬ」です。"
    message2="クイズ:鶴ヶ城(会津城)の旧称はなんでしょう?"
    
    dist={"arrive1":("桜鍋 吉し多","〒965-0035福島県会津若松市東栄町5-14",37.494102,139.929993,message1,),"arrive2":("植木屋商店","〒965-0035福島県会津若松市馬場町1-35",37.497540,139.931335,message2)}
    eventtext=event.message.text
    if event.message.text in dist:
        all_num=r.decr(event_mst[event.message.text])
        #all_num=r.get(event_mst[event.message.text]).decode('utf-8')
        line_bot_api.reply_message(
            event.reply_token,
            [
                LocationSendMessage(
                    title     = dist[event.message.text][0],
                    address   = dist[event.message.text][1],
                    latitude  = dist[event.message.text][2],
                    longitude = dist[event.message.text][3]
                ),
                TextSendMessage(text=dist[eventtext][4]+"  締切まであと"+str(all_num)+"人です。")
            ]
        )
Example #18
0
def handle_location_message(event):
    msg_track.log_message_activity(
        line_api_proc.source_channel_id(event.source),
        db.msg_event_type.recv_txt)
    return

    api_reply(
        event.reply_token,
        LocationSendMessage(title=event.message.title,
                            address=event.message.address,
                            latitude=event.message.latitude,
                            longitude=event.message.longitude), event.source)
Example #19
0
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    json_body = ast.literal_eval(body)
    print(json_body)
    user_id = json_body['events'][0]['source']['userId']
    display_name = line_bot_api.get_profile(user_id).display_name
    message = json_body['events'][0]['message']
    address = message.get('address')
    lat = message.get('latitude')
    lon = message.get('longitude')
    reply_token = json_body['events'][0]['replyToken']
    # print(display_name, address, lat, lon)

    app.logger.info("Request body: " + body)

    # handle webhook body
    if lat and lon:
        nerest_vm_info = gogoro_scraper.vm_finder(gogoro_scraper.gogoro_gf_id,
                                                  lat, lon)
        if nerest_vm_info:
            # print(nerest_vm_info)
            nerest_vm_name = nerest_vm_info[0]
            nerest_vm_add = nerest_vm_info[1]
            nerest_vm_lat = nerest_vm_info[2]
            nerest_vm_lon = nerest_vm_info[3]
            nerest_vm_eta = nerest_vm_info[4]
            nerest_vm_dot = nerest_vm_info[5]
            nerest_vm_maneuvers = nerest_vm_info[6]
            body = (
                TextSendMessage(
                    text='親愛的{}:已為您找到最接近的GoStation為「{}」,車程約{}。'.format(
                        display_name, nerest_vm_name, nerest_vm_eta)),
                LocationSendMessage(title=nerest_vm_name,
                                    address=nerest_vm_add,
                                    latitude=nerest_vm_lat,
                                    longitude=nerest_vm_lon),
                TextSendMessage(
                    text='路徑規劃:https://wego.here.com/directions/mix/{},{}/{},{}'
                    .format(lat, lon, nerest_vm_lat, nerest_vm_lon)))
            line_bot_api.reply_message(reply_token, body)
        else:
            line_bot_api.reply_message(
                reply_token,
                TextSendMessage(
                    text='很抱歉,找不到附近的GoStation或您不在GoStation的服務範圍內。'))
    else:
        line_bot_api.reply_message(
            reply_token, TextSendMessage(text='請傳送「位置資訊」來查詢最近的GoStation,謝謝!'))
    return 'ok'
Example #20
0
 def on_enter_ask_hospital_map(self, event):
     address = parse_qs(event.postback.data)['hosptial_address'][0]
     hosp = hospital.models.Hospital.objects.using('tainan').get(
         address=address)
     self.bot_client.reply_message(
         event,
         messages=LocationSendMessage(title=self.render_text(
             'nearby_hospital/map_msg.j2', hosp.name),
                                      address=hosp.address,
                                      latitude=hosp.lat,
                                      longitude=hosp.lng))
     self.finish_ans()
Example #21
0
def handle_postback(event):
    if event.postback.data == 'Intro-DS':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.ds))
    elif event.postback.data == 'Intro-MDA':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.mda))
    elif event.postback.data == 'Intro-WeatherMood':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.wm))
    elif event.postback.data == 'Intro-Doodle':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.dj))
    elif event.postback.data == 'Triats-Resp':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.traits_resp))
    elif event.postback.data == 'Triats-Open':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.traits_open))
    elif event.postback.data == 'More-Info':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(text='選擇想了解的項目',
                            quick_reply=quick_reply_tepmplate))
    elif event.postback.data == 'Music':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="Chvrches-Forever"))
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://i.imgur.com/7w0cpRn.jpg',
                action=URIAction(
                    label='Listen!',
                    uri='https://www.youtube.com/watch?v=CRDruiv08_4')),
        ])
        template_message = TemplateSendMessage(
            alt_text='Image-music', template=image_carousel_template)
        line_bot_api.push_message(event.source.user_id, template_message)

        time.sleep(1)

        line_bot_api.push_message(
            event.source.user_id,
            TextSendMessage(text="A song that get you out of depression."))
    elif event.postback.data == 'Location':
        line_bot_api.reply_message(
            event.reply_token,
            LocationSendMessage(title='清華大學 梅園',
                                address='新竹市東區光復路二段101號',
                                latitude=24.7928700,
                                longitude=120.9908193))
    elif event.postback.data == 'Poke':
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=Intro.poke))
Example #22
0
 def handle_location_message(event):
     if isinstance(event.source, SourceUser):
         line_bot_api.reply_message(
             event.reply_token,
             LocationSendMessage(title='Location',
                                 address=event.message.address,
                                 latitude=event.message.latitude,
                                 longitude=event.message.longitude))
     elif isinstance(event.source, SourceGroup):
         pass
     elif isinstance(event.source, SourceRoom):
         pass
 def on_enter_ask_hospital_map(self, event):
     address = parse_qs(event.postback.data)['hosptial_address'][0]
     hosp = hospital.models.Hospital.objects.using('tainan').get(
         address=address)
     self.line_bot_api.reply_message(
         event.reply_token,
         messages=LocationSendMessage(
             title="地圖 - {name}".format(name=hosp.name),
             address=hosp.address,
             latitude=hosp.lat,
             longitude=hosp.lng))
     self.finish_ans()
Example #24
0
def handle_message(event):
    if event.message.text.isdigit():
        line_bot_api.reply_message(event.reply_token, [
            LocationSendMessage(title=pins[int(event.message.text)][2],
                                address='東京都新宿区',
                                latitude=pins[int(event.message.text)][0],
                                longitude=pins[int(event.message.text)][1])
        ])
    else:
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='位置情報を送ると近くで終電まで空いている駅一覧を教えるよ􀀪 '),
            TextSendMessage(text='line://nv/location'),
        ])
def handle_location_message(event):
    lat = event.message.latitude
    lng = event.message.longitude
    address = event.message.address
    title = event.message.title

    print("Lat : {}".format(lat))
    line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(title=title,
                            address=address,
                            latitude=latitude,
                            longitude=longitude))
Example #26
0
def handle_location_message(event):
    """ LocationMessage handler """
    user_id = event.source.user_id
    address = event.message.address
    lat = event.message.latitude
    lng = event.message.longitude

    line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(title="お店の場所",
                            address=address,
                            latitude=lat,
                            longitude=lng))
Example #27
0
def handle_postback(event):
    if event.postback.data.startswith('address:'):
        data = event.postback.data.split(':')[1].split(',')
        lat = data[0]
        lon = data[1]
        address = data[2]

        line_bot_api.reply_message(
            event.reply_token,
            LocationSendMessage(title=data[2],
                                address=data[3],
                                latitude=lat,
                                longitude=lon))
Example #28
0
def sendPosition(event, backdata):  #傳送位置
    try:
        message = LocationSendMessage(
            alt_text='位置',
            title='資策會',
            address='320桃園市中壢區中大路300號',
            latitude=24.9664599,  #緯度
            longitude=121.1889883  #經度
        )
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
Example #29
0
def handle_location_message(event):
    print("lokasi")
    print(event.message)
    if event.message.title is None:
        title = "Lokasi"
    else:
        title = event.message.title

    line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(title=title,
                            address=event.message.address[:100],
                            latitude=event.message.latitude,
                            longitude=event.message.longitude))
Example #30
0
def handle_beacon(event):
    if event.beacon.type == "enter":
        if not get_user_visit(event.source.user_id):
            register_user_visit(event.source.user_id)
            set_user_coupon_status(event.source.user_id, True)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text="ご来店ありがとうございます􀂕"),
                LocationSendMessage(title='XXカフェXX店',
                                    address='東京都新宿区111-1111',
                                    latitude='35.688772',
                                    longitude='139.701840'),
                TextSendMessage(text="クーポンです􀁳"),
                TextSendMessage(text="􀀵ご注意􀀵リンクはお店の方に押して頂きますようお願いいたします􀀩"),
                TextSendMessage(text='https://' + request.host + '/coupon'),
            ])