Skip to content

Commit 6764dbf

Browse files
authored
Fix twilio logic (#68)
1 parent 382e826 commit 6764dbf

File tree

4 files changed

+47
-11
lines changed

4 files changed

+47
-11
lines changed

llmstack/apps/handlers/twilio_sms_app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def run_app(self):
132132
),
133133
ActorConfig(
134134
name='output', template_key='output', dependencies=['input'],
135-
actor=OutputActor, kwargs={'template': '{{_inputs0._request}}'},
135+
actor=OutputActor, kwargs={'template': '{{_inputs0}}'},
136136
),
137137
]
138138
processor_actor_configs, processor_configs = self._get_processor_actor_configs()

llmstack/client/src/components/apps/AppRunHistoryTimeline.jsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { appsState } from "../../data/atoms";
3131
import { axios } from "../../data/axios";
3232
import { ReactComponent as DiscordIcon } from "../../assets/images/icons/discord.svg";
3333
import { ReactComponent as SlackIcon } from "../../assets/images/icons/slack.svg";
34+
import { ReactComponent as TwilioIcon } from "../../assets/images/icons/twilio.svg";
3435
import "ace-builds/src-noconflict/mode-sh";
3536
import "ace-builds/src-noconflict/theme-chrome";
3637

@@ -364,6 +365,17 @@ export function AppRunHistoryTimeline(props) {
364365
{row.platform_data?.discord?.global_name}
365366
</Box>
366367
);
368+
} else if (row.platform_data?.twilio?.requestor) {
369+
return (<Box>
370+
<SvgIcon
371+
component={TwilioIcon}
372+
fontSize="8"
373+
sx={{
374+
marginRight: "5px",
375+
color: "#555",
376+
verticalAlign: "middle",
377+
}}/>{row.platform_data?.twilio?.requestor}
378+
</Box>)
367379
} else if (
368380
row.request_user_email === null ||
369381
row.request_user_email === ""

llmstack/processors/providers/twilio/create_message.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,12 @@
1212

1313
logger = logging.getLogger(__name__)
1414

15-
16-
1715
class TwilioCreateMessageInput(ApiProcessorSchema):
18-
_request: Optional[TwilioSmsWebhookRequest]
1916
body: Optional[str]
2017
to: Optional[str]
2118

2219
class TwilioCreateMessageOutput(ApiProcessorSchema):
23-
response: dict
20+
code: int = 200
2421

2522
class TwilioCreateMessageConfiguration(ApiProcessorSchema):
2623
account_sid: Optional[str]
@@ -68,14 +65,23 @@ def _send_message(self, message: str, to_: str, from_: str, account_sid: str, au
6865

6966

7067
def process(self) -> dict:
68+
self._twilio_api_response = None
7169
input = self._input.dict()
7270
response = self._send_message(message=input['body'], to_=input['to'], from_=self._config.phone_number, account_sid=self._config.account_sid, auth_token=self._config.auth_token)
71+
72+
self._twilio_api_response = {
73+
'code': response['code'],
74+
'headers': response['headers'],
75+
'text': response['text'],
76+
}
77+
7378
async_to_sync(self._output_stream.write)(
74-
TwilioCreateMessageOutput(response=response),
79+
TwilioCreateMessageOutput(code=response['code']),
7580
)
7681
return self._output_stream.finalize()
7782

7883
def on_error(self, error: Any) -> None:
84+
self._twilio_api_response = None
7985
input = self._input.dict()
8086

8187
logger.error(f'Error in TwilioCreateMessageProcessor: {error}')
@@ -85,11 +91,18 @@ def on_error(self, error: Any) -> None:
8591

8692
response = self._send_message(
8793
error_msg, to_=input['to'], from_=self._config.phone_number, account_sid=self._config.account_sid, auth_token=self._config.auth_token)
94+
95+
self._twilio_api_response = {
96+
'code': response['code'],
97+
'headers': response['headers'],
98+
'text': response['text'],
99+
}
100+
88101
async_to_sync(self._output_stream.write)(
89-
TwilioCreateMessageOutput(response=response),
102+
TwilioCreateMessageOutput(code=response['code']),
90103
)
91104
self._output_stream.finalize()
92105
return super().on_error(error)
93106

94107
def get_bookkeeping_data(self) -> BookKeepingData:
95-
return BookKeepingData(input=self._input, timestamp=time.time(), run_data={'twilio': {'requestor' : self._input.to}})
108+
return BookKeepingData(input=self._input, timestamp=time.time(), run_data={'twilio': {'requestor' : self._input.to, 'messages_api_response': self._twilio_api_response}})

llmstack/processors/tasks.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,14 @@ def persist_history_task_internal(processors, bookkeeping_data_map):
2020
'timestamp'] if 'agent' in bookkeeping_data_map else bookkeeping_data_map['output']['timestamp']
2121
discord_data = bookkeeping_data_map['discord_processor'] if 'discord_processor' in bookkeeping_data_map else None
2222
slack_data = bookkeeping_data_map['slack_processor'] if 'slack_processor' in bookkeeping_data_map else None
23-
platform_data = discord_data['run_data'] if discord_data else (
24-
slack_data['run_data'] if slack_data else {}
25-
)
23+
twilio_data = bookkeeping_data_map['twilio_processor'] if 'twilio_processor' in bookkeeping_data_map else None
24+
platform_data = {}
25+
if discord_data:
26+
platform_data = discord_data['run_data']
27+
elif slack_data:
28+
platform_data = slack_data['run_data']
29+
elif twilio_data:
30+
platform_data = twilio_data['run_data']
2631

2732
processor_runs = []
2833
for processor in processors:
@@ -64,6 +69,9 @@ def persist_history_task_internal(processors, bookkeeping_data_map):
6469
elif discord_data:
6570
response_body = discord_data['input']['text']
6671
response_content_type = 'text/markdown'
72+
elif twilio_data:
73+
response_body = twilio_data['input']['body']
74+
response_content_type = 'text/markdown'
6775

6876
response_time = output_timestamp - \
6977
bookkeeping_data_map['input']['timestamp']
@@ -73,6 +81,9 @@ def persist_history_task_internal(processors, bookkeeping_data_map):
7381
elif discord_data:
7482
response_time = discord_data['timestamp'] - \
7583
bookkeeping_data_map['input']['timestamp']
84+
elif twilio_data:
85+
response_time = twilio_data['timestamp'] - \
86+
bookkeeping_data_map['input']['timestamp']
7687

7788
run_entry = RunEntry(
7889
request_uuid=input['request_uuid'], app_uuid=input['request_app_uuid'] or None,

0 commit comments

Comments
 (0)