Требования для Запуска Процесса: Operations Hub Professional для доступа к Custom code в workflow в разделе data ops. Private App: Приложение, у которого установлены разрешения на conversations.read.
Описание Работы Процесса:
- Триггер на Изменение Даты Последнего Сообщения:
- При изменении даты последнего сообщения срабатывает триггер на workflow.
-
Обработка Сообщений в Workflow:
- В workflow содержится блок с пользовательским кодом, который выполняет запрос к истории переписки в inbox.
- Ответ на запрос формируется в текстовом формате:
text
Отправитель - Текст сообщения
-
Отправка Сформированного Текста:
- После обработки текст можно отправить в ассоциированный контакт или любой другой объект.
Пример Кода:
python
import requests
def main(event):
try:
# Извлечение id_t из event
id_t = event.get("inputFields", {}).get("idt")
if not id_t:
return {"error": "idt is missing in the inputFields"}
# Обновление URL с использованием id_t
url = f"https://api.hubapi.com/conversations/v3/conversations/threads/{id_t}/messages"
headers = {
'authorization': 'Bearer ТОКЕН_ИЗ_ВАШЕГО_АППА',
'accept': 'application/json'
}
response = requests.get(url, headers=headers)
print(f"Response status code: {response.status_code}")
if response.status_code != 200:
return {"error": f"Request failed with status code {response.status_code}"}
# Парсим ответ в JSON
messages = response.json()
# Разворачиваем список сообщений
results = messages.get('results', [])[::-1]
# Извлечение text и senders из каждого сообщения
combined_texts = []
for message in results:
text = message.get('text')
senders = message.get('senders', []) # Предполагаем, что это массив
senders_names = [sender.get('name') for sender in senders]
if text and senders_names:
# Формируем строку в формате "sender - text"
combined_texts.append(f"{senders_names[0]} - {text}")
# Объединяем все строки в одну с новой строкой между ними
combined_texts_str = "\n".join(combined_texts)
return {
"outputFields": {
"text": combined_texts_str
}
}
except Exception as e:
return {"error": str(e)}