Пример #1
0
 def send_seen_and_typing_on_indicators(self):
     seenResponse = ResponseBuilder(recipientId=self.message.senderId,
                                    senderAction="mark_seen",
                                    description="Marking message as seen",
                                    dryRun=self._dryRun)
     seenResponse.create_and_get_chained_response(
         senderAction="typing_on", description="Turning typing on")
     self._executor.submit(seenResponse.send())
Пример #2
0
 def send_waiting_response(self, respTail: ResponseBuilder):
     respBranch = respTail.create_and_get_separate_response(
         text=self.phrase.get('wait'), description="Wait text")
     respBranch.create_and_get_chained_response(
         senderAction="typing_on",
         description="Turning typing on for waiting")
     self._executor.submit(respBranch.send)
Пример #3
0
    def map_response(self, respTail: ResponseBuilder) -> ResponseBuilder:
        respTail = respTail.create_and_get_chained_response(
            text=self.phrase.get('delivery'), description="Delivery text")
        mapIdGen = yield_map_id()
        mapId = next(mapIdGen)
        if not mapId:
            self.send_waiting_response(respTail)
            mapId = next(mapIdGen)
        if mapId:
            respTail = respTail.create_and_get_chained_response(
                attachment=Asset(assetType='image', attchId=mapId),
                description="Map asset from attachment ID")
        else:
            # TODO: Backup plan
            pass

        return respTail
Пример #4
0
    def travel_response(self, respTail: ResponseBuilder) -> ResponseBuilder:
        respTail = respTail.create_and_get_chained_response(
            text="[TODO: Fill in the travel response.]",
            description="Travel text")

        # TODO: Outsource this to new file

        # HACK: Just trying to get basic functionality

        from compose.utils.requests import get
        from compose.utils.keys import BART_PUBL

        params: dict = {
            'cmd':
            'depart' if self.entities.timeArr is None else 'arrive',
            'orig':
            self.entities.stn,
            'dest':
            self.entities.stnDest,
            'time':
            time.strftime(
                "%-I:%M %p", self.entities.time
                if self.entities.timeArr is None else self.entities.timeArr),
            'b':
            '1',
            'a':
            '4',
            'json':
            'y',
            'key':
            BART_PUBL
        }

        ok, resp = get(url="http://api.bart.gov/api/sched.aspx", params=params)

        trips: list = resp['root']['schedule']['request']['trip']
        strTrips: list = []
        for trip in trips:
            strTrips.append(
                f"{trip['@origin']} {trip['@origTimeMin']} to {trip['@destination']} {trip['@destTimeMin']}"
            )
        respTail = respTail.create_and_get_chained_response(
            text='\n'.join(strTrips), description='HACK trip info')

        return respTail
Пример #5
0
    def process_message(self):
        self.phrase.add_attributes(firstName=self.user.fn)

        head = respTail = ResponseBuilder(recipientId=self.message.senderId,
                                          dryRun=self._dryRun)

        if isinstance(self.message, Attachment):
            respTail = self.process_attachment(respTail)

        # BUG: Figure out why I can't call Text as `Text`
        elif isinstance(self.message, rcv.text.Text):
            respTail = self.process_text(respTail)

        return head
Пример #6
0
 def send_typing_off_indicator(self):
     typingOffResponse = ResponseBuilder(recipientId=self.message.senderId,
                                         senderAction="typing_off",
                                         description="Turning typing off",
                                         dryRun=self._dryRun)
     self._executor.submit(typingOffResponse.send())
Пример #7
0
 def unknown_response(self, respTail: ResponseBuilder) -> ResponseBuilder:
     respTail = respTail.create_and_get_chained_response(
         text="[TODO: Fill in the unknown text response.]",
         description="Unknown text")
     return respTail
Пример #8
0
 def weather_response(self, respTail: ResponseBuilder) -> ResponseBuilder:
     respTail = respTail.create_and_get_chained_response(
         text="[TODO: Fill in the weather response.]",
         description="Weather text")
     return respTail
Пример #9
0
 def cost_response(self,
                   respTail: ResponseBuilder,
                   roundTrip: bool = False) -> ResponseBuilder:
     respTail = respTail.create_and_get_chained_response(
         text="[TODO: Fill in the cost response.]", description="Cost text")
     return respTail
Пример #10
0
 def help_response(self, respTail: ResponseBuilder) -> ResponseBuilder:
     respTail = respTail.create_and_get_chained_response(
         text=self.phrase.get('helpText'), description="Help text response")
     return respTail
Пример #11
0
 def process_message(self) -> ResponseBuilder:
     return ResponseBuilder(
         recipientId=self.message.senderId,
         text=f"You typed {self.message.text if hasattr(self.message, 'text') else '[no text found]'}",
         description="Message echo from EchoController")