Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added support for custom body text for whatsapp converter button #1839

Merged
merged 3 commits into from
Mar 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions kairon/chat/converters/channels/whatsapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ def button_transformer(self, message):
body_default = ElementTransformerOps.getChannelConfig(self.channel, "body_message")
body_msg = {"text": body_default}
for item in jsoniterator:
if item.get("type") == 'label':
body_msg = {"text": item.get("text")}
if item.get("type") == ElementTypes.BUTTON.value:
title = ElementTransformerOps.json_generator(item.get("children"))
for titletext in title:
Expand Down
2 changes: 1 addition & 1 deletion kairon/shared/llm/processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ async def predict(self, query: Text, user, *args, **kwargs) -> Tuple:

context = await self.__attach_similarity_prompt_if_enabled(query_embedding, context_prompt, **kwargs)
answer = await self.__get_answer(query, system_prompt, context, user, invocation=invocation,llm_type = llm_type, **kwargs)
response = {"content": answer}
response = {"content": answer, "context": context}
except Exception as e:
logging.exception(e)
if embeddings_created:
Expand Down
7 changes: 7 additions & 0 deletions tests/integration_test/action_service_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -13623,6 +13623,8 @@ def test_prompt_action_dispatch_response_disabled(mock_get_embedding, aiorespons
for event in events:
if event.get('time_elapsed') is not None:
del event['time_elapsed']
if event.get('llm_response_log'):
event['llm_response_log'].pop('context')
assert events == [
{'type': 'llm_response',
'response': 'Python is dynamically typed, garbage-collected, high level, general purpose programming.',
Expand Down Expand Up @@ -13754,6 +13756,8 @@ def test_prompt_action_set_slots(mock_slot_set, mock_get_embedding, aioresponses
for event in events:
if event.get('time_elapsed') is not None:
del event['time_elapsed']
if event.get('llm_response_log'):
event['llm_response_log'].pop('context')
assert events == [
{'type': 'llm_response',
'response': '{"api_type": "filter", {"filter": {"must": [{"key": "Date Added", "match": {"value": 1673721000.0}}]}}}',
Expand Down Expand Up @@ -13902,9 +13906,12 @@ def test_prompt_action_response_action_slot_prompt(mock_get_embedding, aiorespon
assert log["time_elapsed"]
log.pop('time_elapsed')
events = log.pop('events')
assert len(events[0]['llm_response_log']['context']) > 0
for event in events:
if event.get('time_elapsed') is not None:
del event['time_elapsed']
if event.get('llm_response_log'):
event['llm_response_log'].pop('context')
assert events == [
{'type': 'llm_response',
'response': 'Python is dynamically typed, garbage-collected, high level, general purpose programming.',
Expand Down
5 changes: 0 additions & 5 deletions tests/unit_test/llm_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,18 @@

import numpy as np
import pytest
import ujson as json
from absl.logging import exception
from aiohttp import ClientConnectionError
from fastapi.dependencies.utils import request_body_to_args
from mongoengine import connect

from kairon.shared.rest_client import AioRestClient
from kairon.shared.utils import Utility


from kairon.exceptions import AppException
from kairon.shared.admin.constants import BotSecretType
from kairon.shared.admin.data_objects import BotSecrets, LLMSecret
from kairon.shared.cognition.data_objects import CognitionData, CognitionSchema
from kairon.shared.data.constant import DEFAULT_SYSTEM_PROMPT, DEFAULT_LLM
from kairon.shared.llm.processor import LLMProcessor
import litellm
from deepdiff import DeepDiff


Expand Down
Loading