|
30 | 30 | GetColorsResponse,
|
31 | 31 | )
|
32 | 32 | from kenar.chatmessage import (
|
33 |
| - SetNotifyChatPostConversationsRequest, |
34 | 33 | SendMessageV2Request,
|
35 | 34 | SendMessageV2Response,
|
36 |
| - SetNotifyChatPostConversationsResponse, |
| 35 | + ChatBotSendMessageRequest, |
| 36 | + ChatBotSendMessageResponse, |
| 37 | +) |
| 38 | +from kenar.events import ( |
| 39 | + RegisterEventSubscriptionRequest, |
| 40 | + RegisterEventSubscriptionResponse, |
37 | 41 | )
|
38 | 42 | from kenar.finder import (
|
39 | 43 | SearchPostRequest,
|
@@ -64,41 +68,45 @@ class ChatService:
|
64 | 68 | def __init__(self, client: httpx.Client):
|
65 | 69 | self._client = client
|
66 | 70 |
|
67 |
| - def set_notify_chat_post_conversations( |
| 71 | + def send_message( |
68 | 72 | self,
|
69 | 73 | access_token: str,
|
70 |
| - data: SetNotifyChatPostConversationsRequest, |
| 74 | + data: SendMessageV2Request, |
71 | 75 | max_retry=3,
|
72 | 76 | retry_delay=1,
|
73 |
| - ) -> SetNotifyChatPostConversationsResponse: |
| 77 | + ) -> SendMessageV2Response: |
74 | 78 | @retry(max_retries=max_retry, delay=retry_delay)
|
75 | 79 | def send_request():
|
76 | 80 | return self._client.post(
|
77 |
| - url="/v1/open-platform/notify/chat/post-conversations", |
| 81 | + url="/v2/open-platform/chat/conversation", |
78 | 82 | content=data.json(),
|
79 | 83 | headers={ACCESS_TOKEN_HEADER_NAME: access_token},
|
80 | 84 | )
|
81 | 85 |
|
82 |
| - send_request() |
83 |
| - return SetNotifyChatPostConversationsResponse() |
| 86 | + rsp = send_request() |
| 87 | + return SendMessageV2Response(**rsp.json()) |
84 | 88 |
|
85 |
| - def send_message( |
| 89 | + def send_chatbot_message( |
86 | 90 | self,
|
87 |
| - access_token: str, |
88 |
| - data: SendMessageV2Request, |
| 91 | + data: ChatBotSendMessageRequest, |
89 | 92 | max_retry=3,
|
90 | 93 | retry_delay=1,
|
91 | 94 | ) -> SendMessageV2Response:
|
92 | 95 | @retry(max_retries=max_retry, delay=retry_delay)
|
93 | 96 | def send_request():
|
94 |
| - return self._client.post( |
95 |
| - url="/v2/open-platform/chat/conversation", |
96 |
| - content=data.json(), |
97 |
| - headers={ACCESS_TOKEN_HEADER_NAME: access_token}, |
98 |
| - ) |
| 97 | + if data.user_id: |
| 98 | + return self._client.post( |
| 99 | + url=f"/experimental/open-platform/chat/bot/users/{data.user_id}/messages", |
| 100 | + content=data.json(), |
| 101 | + ) |
| 102 | + else: |
| 103 | + return self._client.post( |
| 104 | + url=f"/experimental/open-platform/chat/bot/conversations/{data.conversation_id}/messages", |
| 105 | + content=data.json(), |
| 106 | + ) |
99 | 107 |
|
100 | 108 | rsp = send_request()
|
101 |
| - return SendMessageV2Response(**rsp.json()) |
| 109 | + return ChatBotSendMessageResponse(**rsp.json()) |
102 | 110 |
|
103 | 111 |
|
104 | 112 | class FinderService:
|
@@ -174,6 +182,29 @@ def send_request():
|
174 | 182 | return GetUserPostsResponse(**rsp.json())
|
175 | 183 |
|
176 | 184 |
|
| 185 | +class EventsService: |
| 186 | + def __init__(self, client: httpx.Client): |
| 187 | + self._client = client |
| 188 | + |
| 189 | + def register_event_subscription( |
| 190 | + self, |
| 191 | + access_token: str, |
| 192 | + data: RegisterEventSubscriptionRequest, |
| 193 | + max_retry=3, |
| 194 | + retry_delay=1, |
| 195 | + ) -> RegisterEventSubscriptionResponse: |
| 196 | + @retry(max_retries=max_retry, delay=retry_delay) |
| 197 | + def send_request(): |
| 198 | + return self._client.post( |
| 199 | + url="/v1/open-platform/events/subscriptions", |
| 200 | + content=data.json(), |
| 201 | + headers={ACCESS_TOKEN_HEADER_NAME: access_token}, |
| 202 | + ) |
| 203 | + |
| 204 | + send_request() |
| 205 | + return RegisterEventSubscriptionResponse() |
| 206 | + |
| 207 | + |
177 | 208 | class AddonService:
|
178 | 209 | def __init__(self, client: httpx.Client):
|
179 | 210 | self._client = client
|
@@ -526,13 +557,18 @@ def __init__(self, conf: ClientConfig):
|
526 | 557 | )
|
527 | 558 | self._finder = FinderService(self._client)
|
528 | 559 | self._chat = ChatService(self._client)
|
| 560 | + self._events = EventsService(self._client) |
529 | 561 | self._addon = AddonService(self._client)
|
530 | 562 | self._asset = AssetService(self._client)
|
531 | 563 |
|
532 | 564 | @property
|
533 | 565 | def chat(self):
|
534 | 566 | return self._chat
|
535 | 567 |
|
| 568 | + @property |
| 569 | + def events(self): |
| 570 | + return self._events |
| 571 | + |
536 | 572 | @chat.setter
|
537 | 573 | def chat(self, service: ChatService):
|
538 | 574 | if not isinstance(service, ChatService):
|
|
0 commit comments