Перейти к содержанию

CPA и CallTracking

Этот рецепт показывает, как читать CPA-звонки за период, открыть конкретный звонок CallTracking и скачать запись разговора без доступа к внутреннему transport.

CPA-звонки за период

cpa_call().list() принимает границы периода строками в формате upstream API и возвращает типизированный список звонков.

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    calls = avito.cpa_call().list(
        date_time_from="2026-04-18T00:00:00Z",
        date_time_to="2026-04-19T00:00:00Z",
    )

print(calls.items[0].call_id)
print(calls.items[0].buyer_phone)

Звонок CallTracking

Если известен call_id, используйте call_tracking_call(call_id).get(). Идентификатор можно передать в фабрику или явно в метод.

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    call = avito.call_tracking_call(10).get()

print(call.call.call_id if call.call else None)
print(call.call.talk_duration if call.call else None)

Запись разговора

download() возвращает бинарную модель записи. Для логов и JSON-отчётов используйте to_dict(): бинарное содержимое сериализуется безопасно.

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    record = avito.call_tracking_call(10).download()
    payload = record.to_dict()

print(payload["content_base64"])

Полный контракт смотрите в reference по cpa. Исключения и поля metadata описаны в reference по ошибкам.