Skip to content

Commit dec169c

Browse files
committed
Wrapper for emit func for blocks
1 parent cf6b555 commit dec169c

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

src/steamship/experimental/package_starters/telegram_agent.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import logging
22
from abc import ABC
3-
from typing import Type
3+
from typing import List, Type
44

55
import requests
66
from pydantic import Field
77

8-
from steamship.agents.context.context import AgentContext
8+
from steamship import Block
9+
from steamship.agents.context.context import AgentContext, EmitFunc, Metadata
910
from steamship.experimental.package_starters.web_agent import SteamshipWidgetAgentService
1011
from steamship.experimental.package_starters.web_bot import response_for_exception
1112
from steamship.experimental.transports import TelegramTransport
@@ -36,6 +37,14 @@ def instance_init(self):
3637
webhook_url = self.context.invocable_url + "respond"
3738
self.telegram_transport.instance_init(webhook_url=webhook_url)
3839

40+
def build_emit_func(self, chat_id: str) -> EmitFunc:
41+
def new_emit_func(blocks: List[Block], metadata: Metadata):
42+
for block in blocks:
43+
block.set_chat_id(chat_id)
44+
return self.telegram_transport.send(blocks, metadata)
45+
46+
return new_emit_func
47+
3948
@post("respond", public=True)
4049
def respond(self, **kwargs) -> InvocableResponse[str]:
4150
"""Endpoint implementing the Telegram WebHook contract. This is a PUBLIC endpoint since Telegram cannot pass a Bearer token."""
@@ -49,11 +58,11 @@ def respond(self, **kwargs) -> InvocableResponse[str]:
4958
context = AgentContext.get_or_create(self.client, context_keys={"chat_id": chat_id})
5059
context.chat_history.append_user_message(text=incoming_message.text)
5160
if len(context.emit_funcs) == 0:
52-
context.emit_funcs.append(self.telegram_transport.send)
61+
context.emit_funcs.append(self.build_emit_func(chat_id=chat_id))
5362

5463
response = self.run_agent(context)
5564
if response is not None:
56-
self.telegram_transport.send(response)
65+
self.telegram_transport.send(response, metadata={})
5766
else:
5867
# Do nothing here; this could be a message we intentionally don't want to respond to (ex. an image or file upload)
5968
pass
@@ -64,7 +73,7 @@ def respond(self, **kwargs) -> InvocableResponse[str]:
6473
response = response_for_exception(e, chat_id=chat_id)
6574

6675
if chat_id is not None:
67-
self.telegram_transport.send([response])
76+
self.telegram_transport.send([response], metadata={})
6877
# Even if we do nothing, make sure we return ok
6978
return InvocableResponse(string="OK")
7079

0 commit comments

Comments
 (0)