letschatty 0.4.333__py3-none-any.whl → 0.4.335__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -93,10 +93,23 @@ class SmartTaggingCallbackEvent(LambdaAiEvent):
93
93
  callback_metadata: SmartTaggingCallbackMetadata
94
94
 
95
95
  @model_validator(mode="before")
96
- def validate_data(cls, data):
97
- if isinstance(data, dict) and "data" in data and "chain_of_thought" in data["data"]:
98
- data["data"]["chain_of_thought"]["chatty_ai_agent_id"] = "000000000000000000000000"
99
- return data
96
+ def normalize_data(cls, values):
97
+ if not isinstance(values, dict):
98
+ return values
99
+
100
+ data = values.get("data")
101
+ if isinstance(data, str):
102
+ import json
103
+ try:
104
+ data = json.loads(data)
105
+ values["data"] = data
106
+ except (json.JSONDecodeError, TypeError):
107
+ return values
108
+
109
+ if isinstance(data, dict) and "chain_of_thought" in data:
110
+ data["chain_of_thought"]["chatty_ai_agent_id"] = "000000000000000000000000"
111
+
112
+ return values
100
113
 
101
114
  class ChatData(BaseModel):
102
115
  chat_id: StrObjectId
@@ -4,6 +4,7 @@ from enum import StrEnum
4
4
  from pydantic_core.core_schema import str_schema
5
5
 
6
6
  from letschatty.models.company.assets.ai_agents_v2.chain_of_thought_in_chat import ChainOfThoughtInChatTrigger
7
+ from letschatty.models.company.assets.ai_agents_v2.chatty_ai_agent_in_chat import DataCollectionStatus, PreQualifyStatus
7
8
  from ...utils.types.identifier import StrObjectId
8
9
  from datetime import datetime
9
10
  from zoneinfo import ZoneInfo
@@ -75,6 +76,14 @@ class ChattyAIAgentAssignedToChat(AssignedAssetToChat):
75
76
  mode: ChattyAIMode = Field(default=ChattyAIMode.OFF)
76
77
  requires_human_intervention: bool = Field(default=False)
77
78
  is_processing: bool = Field(default=False)
79
+ data_collection_status: Optional[DataCollectionStatus] = Field(
80
+ default=None,
81
+ description="Status of data collection for pre-qualification"
82
+ )
83
+ pre_qualify_status: Optional[PreQualifyStatus] = Field(
84
+ default=None,
85
+ description="Status of pre-qualification"
86
+ )
78
87
  last_call_started_at: Optional[datetime] = Field(default=None, description="The timestamp of the get chat with prompt (the moment n8n started processing the call)")
79
88
  trigger_timestamp: Optional[datetime] = Field(default=None, description="The timestamp of the trigger that started the call, if it's a manual trigger, it will be the timestamp of the manual trigger, if it's a follow up, it will be the timestamp of the follow up, if it's a user message, it will be the timestamp of the user message")
80
89
  last_call_cot_id: Optional[StrObjectId] = Field(default=None)
@@ -1,4 +1,4 @@
1
- from pydantic import BaseModel, Field, field_validator
1
+ from pydantic import BaseModel, Field, field_validator, ConfigDict
2
2
  from typing import Optional, Any, ClassVar, List
3
3
  from letschatty.models.base_models.chatty_asset_model import CompanyAssetModel, ChattyAssetPreview
4
4
  import re
@@ -212,7 +212,11 @@ class CollectedData(BaseModel):
212
212
  name: Optional[str] = Field(default=None, description="Customer's name")
213
213
  email: Optional[str] = Field(default=None, description="Customer's email address")
214
214
  phone: Optional[str] = Field(default=None, description="Customer's phone number")
215
- document_id: Optional[str] = Field(default=None, description="Customer's DNI/ID number")
215
+ document_id: Optional[str] = Field(
216
+ default=None,
217
+ alias="dni",
218
+ description="Customer's DNI/ID number"
219
+ )
216
220
 
217
221
  # Generic key-value store for any other collected fields
218
222
  additional_fields: dict[str, Any] = Field(
@@ -220,6 +224,9 @@ class CollectedData(BaseModel):
220
224
  description="Additional collected fields as key-value pairs"
221
225
  )
222
226
 
227
+ model_config = ConfigDict(
228
+ populate_by_name=True
229
+ )
223
230
 
224
231
  @classmethod
225
232
  def example(cls) -> dict:
@@ -849,6 +849,13 @@ class ChatService:
849
849
  chat.client.email = collected_data.email
850
850
  updated_fields.append("email")
851
851
 
852
+ if collected_data.phone:
853
+ if chat.client.lead_form_data is None:
854
+ chat.client.lead_form_data = {}
855
+ if chat.client.lead_form_data.get("phone") != collected_data.phone:
856
+ chat.client.lead_form_data["phone"] = collected_data.phone
857
+ updated_fields.append("phone")
858
+
852
859
  if collected_data.document_id and chat.client.document_id != collected_data.document_id:
853
860
  chat.client.document_id = collected_data.document_id
854
861
  updated_fields.append("document_id")
@@ -873,4 +880,4 @@ class ChatService:
873
880
  context=ChattyContext(chain_of_thought_id=execution_context.chain_of_thought_id)
874
881
  )
875
882
 
876
- return chat.client.lead_form_data
883
+ return chat.client.lead_form_data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: letschatty
3
- Version: 0.4.333
3
+ Version: 0.4.335
4
4
  Summary: Models and custom classes to work across the Chattyverse
5
5
  License: MIT
6
6
  Author: Axel
@@ -2,7 +2,7 @@ letschatty/__init__.py,sha256=6dGYdy5edB1dHdgvpqUpENZ347CpIyWgR1CsGYwPSk8,45
2
2
  letschatty/models/__init__.py,sha256=obWHa796C-O1mqo_lk22KhUC2ODVvG7cICY3Lo-AqJg,126
3
3
  letschatty/models/ai_microservices/__init__.py,sha256=Ijt8hsCpqZoAlUNPfj8O2gE4zCwEGshio4THxdMT06c,601
4
4
  letschatty/models/ai_microservices/expected_output.py,sha256=oEaTE4Y9lgRog0GmW20b5xdLl9Yiq6Ln_H2_0r1dGvQ,10956
5
- letschatty/models/ai_microservices/lambda_events.py,sha256=Ti5E_qEV1kKFH1VnnIiPpmJp7D0sv_-Iryh-IgQBbkQ,18142
5
+ letschatty/models/ai_microservices/lambda_events.py,sha256=uh0gPVf9iP5FkWagxJjxy2pQQxdaud2TNoovIROFKD0,18449
6
6
  letschatty/models/ai_microservices/lambda_invokation_types.py,sha256=qvwEj2Cn9Pe0WSxi4I7pwdD9qbLSu_i3c_ZVhUjYxR4,2033
7
7
  letschatty/models/ai_microservices/n8n_ai_agents_payload.py,sha256=yV7WhAdnIOxWymrUTYJiDLH71A5mSUsX2gac8oAAGJw,882
8
8
  letschatty/models/ai_microservices/openai_payloads.py,sha256=HauUGf4c37khJJsKyH4ikxzHKboGWnerjDQgDOnMFrY,271
@@ -102,7 +102,7 @@ letschatty/models/company/assets/ai_agents_v2/pre_qualify_config.py,sha256=tXsUX
102
102
  letschatty/models/company/assets/assignment/__init__.py,sha256=eWYZfaDQde5OJNIDed8D-LNRXOa5O_O4mGMToNFtaW8,239
103
103
  letschatty/models/company/assets/assignment/assignment_assets.py,sha256=phIJqNh4UGTU-Hux_kaOYhJm2GCqv37AnCGePSDVKmM,2245
104
104
  letschatty/models/company/assets/automation.py,sha256=QDMCHm--85tEGUwddjWGeUSxmCT27HiH8lRm4w4DJLE,1871
105
- letschatty/models/company/assets/chat_assets.py,sha256=OV33LPOBOaK02Va0yH7rCH5ufmEyOploQPTEefjlsdk,7524
105
+ letschatty/models/company/assets/chat_assets.py,sha256=zxmI3D_ZDcNqK5jusZ7mFgPka3DMSlzeE2u8WXdo46w,7949
106
106
  letschatty/models/company/assets/chatty_fast_answers/__init__.py,sha256=tbgWS0n1i0nVi9f79U44GPRnrW25NKcjl6Port92alk,48
107
107
  letschatty/models/company/assets/chatty_fast_answers/chatty_fast_answer.py,sha256=PxW3eStHXo0BY7Z9hMDqBTHmgO7XcwtOvEpwXi-rA5g,1076
108
108
  letschatty/models/company/assets/company_assets.py,sha256=YKRo_uXhQYRQ8HvMf4HhrHTBC2zp7xlE_B0nqSMfMFY,726
@@ -126,7 +126,7 @@ letschatty/models/company/company_chats_snapshot.py,sha256=Mg9Wmu3pfE-t5Sf57FCj-
126
126
  letschatty/models/company/company_messaging_settgins.py,sha256=7isXt7gmqw-FKSUSZwdctdXDFMfPi2OyPuWqB7WpC6c,957
127
127
  letschatty/models/company/conversation_topic.py,sha256=__IinJ3YcUsiApF4Em5uAgd01ydRUrlCVxaat-pCCRg,1704
128
128
  letschatty/models/company/empresa.py,sha256=2INPC8YSZJcT10Gny_zXV_PujeqUGccsZHV31ZSywyw,5961
129
- letschatty/models/company/form_field.py,sha256=Twzpieo0yia_kJ8uEXJq7pX9drsKuBYEslAMa3iO0Mg,9680
129
+ letschatty/models/company/form_field.py,sha256=LGyMLybwvfEPG3hMmwsoP_4wnMaPJbVFpG6c1HdVC8E,9802
130
130
  letschatty/models/company/insight.py,sha256=B7BL07E4Z1b9aJHi3PXC1atln4-7fSo9JeqgQoeB_ao,7459
131
131
  letschatty/models/company/notifications/notification.py,sha256=wE7rIi21nZno6jjIxajMz4e7OJbzrDHjH1KdkNzJiF8,1907
132
132
  letschatty/models/copilot/links.py,sha256=mcddNR6WdWOoOr3NgDl_FElxF15SiZZXw9wmIV08HRw,185
@@ -230,7 +230,7 @@ letschatty/services/ai_agents/tool_descriptions/human_handover.json,sha256=-b3l_
230
230
  letschatty/services/ai_agents/tool_descriptions.py,sha256=MMFhcgEl6Z7k8BUv3Yx1pCxHzIjc8HD93S0uM5OPj8Y,105
231
231
  letschatty/services/ai_components_service.py,sha256=QUb-NdzHj4nPmnceVSQ9Pe3swFWUrkUFKzDZeuP0b5o,3762
232
232
  letschatty/services/chat/chat_extractors.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
- letschatty/services/chat/chat_service.py,sha256=h1AkzLDA7PSKXIuol18a5-lXq48ODfBPPLtHog0fzzE,47496
233
+ letschatty/services/chat/chat_service.py,sha256=DsnjSYmOXGSRQPtnYEx2O4NPdEXpG1GBOjk53M-jYM8,47832
234
234
  letschatty/services/chat/client_service.py,sha256=TtlG0GJDqx6YemfueiJzAtMNk_udnPhg0MJG0bKwnk8,1097
235
235
  letschatty/services/chat/conversation_topics_service.py,sha256=jvIkpHTCz0JKXui3n_BRs6UQ-TB3x7DrQsnX2zUVFVw,2461
236
236
  letschatty/services/chatty_assets/__init__.py,sha256=yNe0X8N86OBgrUagYVexX8u8wxoqeepNiCSUwa0OnNo,375
@@ -310,7 +310,7 @@ letschatty/services/template_campaigns/template_campaign_service.py,sha256=jORgD
310
310
  letschatty/services/users/agent_service.py,sha256=hIkUUJ1SpkKbh5_uo4i2CeqGtuMTjU7tSV8k5J7WPG4,279
311
311
  letschatty/services/users/user_factory.py,sha256=FCB9uiAfjMeYfh4kMdx5h8VDHJ8MCsD-uaxW3X3KaWM,6681
312
312
  letschatty/services/validators/analytics_validator.py,sha256=-QBR6XIqEv2qw3stcBQehkwui1EcfWUM6M9DRQODykY,6335
313
- letschatty-0.4.333.dist-info/LICENSE,sha256=EClLu_bO2HBLDcThowIwfaIg5EOwIYhpRsBJjVEk92A,1197
314
- letschatty-0.4.333.dist-info/METADATA,sha256=GEeLizc04jQokEcaFGbswe80_NyHKekrNOBFIIoMzy0,3283
315
- letschatty-0.4.333.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
316
- letschatty-0.4.333.dist-info/RECORD,,
313
+ letschatty-0.4.335.dist-info/LICENSE,sha256=EClLu_bO2HBLDcThowIwfaIg5EOwIYhpRsBJjVEk92A,1197
314
+ letschatty-0.4.335.dist-info/METADATA,sha256=21mIuvAaavZ1voihEuwOh-mMKIJj96O69YwG3rFLklU,3283
315
+ letschatty-0.4.335.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
316
+ letschatty-0.4.335.dist-info/RECORD,,