• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Build a Voice Call Sentiment Analysis API with Tinybird

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
In this tutorial, you'll learn how to build an API that performs sentiment analysis on voice call transcripts. This API is particularly useful for monitoring call center performance, analyzing customer sentiment, agent effectiveness, and identifying trends over time. By leveraging Tinybird, a data analytics backend designed for software developers, you can implement this solution efficiently without worrying about the underlying infrastructure. Tinybird facilitates the creation of real-time analytics APIs by providing data sources for storing your data and pipes to transform data and expose it through

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. This API will help you analyze voice call transcripts through simple keyword matching to categorize calls into positive, negative, or neutral sentiments. Additionally, you'll be able to evaluate agent performance and aggregate sentiment over time. Tinybird's data sources and pipes are central to this process, enabling real-time data ingestion, transformation, and API publication. Let's dive into the technical steps required to implement this voice call sentiment analysis API.

Understanding the data


Imagine your data looks like this:


{"call_id": "call_5389", "transcript": "Thank you for your assistance today. You have been very helpful in resolving my issue.", "customer_id": "cust_389", "agent_id": "agent_89", "duration_seconds": 569, "timestamp": "2025-04-14 03:32:28", "call_type": "billing", "caller_phone": "+1396805389", "tags": ["unsatisfied", "unsatisfied"]}
{"call_id": "call_8518", "transcript": "Hello, I need help with my account. I cannot access my services.", "customer_id": "cust_3518", "agent_id": "agent_18", "duration_seconds": 558, "timestamp": "2025-05-02 22:53:39", "call_type": "technical", "caller_phone": "+1385388518", "tags": []}

This data represents voice call transcripts along with metadata such as customer and agent IDs, call duration, timestamp, call type, caller's phone number, and tags indicating the call's nature. To store this data in Tinybird, you first need to create a data source. Here's how you define a data source for the voice call transcripts:


DESCRIPTION >
Stores voice call transcripts with metadata for sentiment analysis

SCHEMA >
`call_id` String `json:$.call_id`,
`transcript` String `json:$.transcript`,
`customer_id` String `json:$.customer_id`,
`agent_id` String `json:$.agent_id`,
`duration_seconds` Int32 `json:$.duration_seconds`,
`timestamp` DateTime `json:$.timestamp`,
`call_type` String `json:$.call_type`,
`caller_phone` String `json:$.caller_phone`,
`tags` Array(String) `json:$.tags[:]`

ENGINE "MergeTree"
ENGINE_PARTITION_KEY "toYYYYMM(timestamp)"
ENGINE_SORTING_KEY "call_id, timestamp"

The schema is designed to optimize query performance with an appropriate sorting key and partitioning strategy. For data ingestion, Tinybird's

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

allows you to stream JSON/NDJSON events from your application frontend or backend with a simple HTTP request. This real-time nature and low latency make it ideal for live data feeds:


curl -X POST "

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

" \
-H "Authorization: Bearer $TB_ADMIN_TOKEN" \
-d '{
"call_id": "call_12345",
"transcript": "Customer: I am really happy with your service. Agent: Thank you for your feedback!",
"customer_id": "cust_789",
"agent_id": "agent_456",
"duration_seconds": 180,
"timestamp": "2023-06-15 14:30:00",
"call_type": "support",
"caller_phone": "+1234567890",
"tags": ["support", "billing"]
}'

Other ingestion methods include using the Kafka connector for event/streaming data, which benefits from Kafka's robustness and scalability, and the

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

or S3 connector for batch/file data.

Transforming data and publishing APIs


Tinybird's

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

enable batch and real-time data transformations. They also help create API endpoints to expose transformed data.

Sentiment Analysis Endpoint


Here's the complete code for the sentiment analysis endpoint pipe:


DESCRIPTION >
Analyzes voice call transcripts for sentiment using simple keyword matching

NODE analyze_sentiment_node
SQL >
%
SELECT
call_id,
transcript,
customer_id,
agent_id,
timestamp,
multiIf(
position(lowerUTF8(transcript), 'happy') > 0 OR
position(lowerUTF8(transcript), 'great') > 0 OR
position(lowerUTF8(transcript), 'excellent') > 0 OR
position(lowerUTF8(transcript), 'thank you') > 0 OR
position(lowerUTF8(transcript), 'appreciate') > 0, 'positive',

position(lowerUTF8(transcript), 'unhappy') > 0 OR
position(lowerUTF8(transcript), 'angry') > 0 OR
position(lowerUTF8(transcript), 'terrible') > 0 OR
position(lowerUTF8(transcript), 'upset') > 0 OR
position(lowerUTF8(transcript), 'frustrated') > 0, 'negative',

'neutral'
) AS sentiment,
duration_seconds
FROM voice_call_transcripts
WHERE 1=1
{% if defined(call_id) %}
AND call_id = {{String(call_id, '')}}
{% end %}
{% if defined(customer_id) %}
AND customer_id = {{String(customer_id, '')}}
{% end %}
{% if defined(agent_id) %}
AND agent_id = {{String(agent_id, '')}}
{% end %}
{% if defined(start_date) %}
AND timestamp >= {{DateTime(start_date, '2023-01-01 00:00:00')}}
{% end %}
{% if defined(end_date) %}
AND timestamp <= {{DateTime(end_date, '2023-12-31 23:59:59')}}
{% end %}
LIMIT {{Int32(limit, 100)}}

TYPE endpoint

This SQL logic matches keywords in transcripts to classify calls into sentiments. Query parameters make this API flexible, allowing for filtering by call ID, customer ID, agent ID, and date range. Example API call:


curl -X GET "

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

"

Similar logic is applied to the agent_performance and sentiment_summary endpoints, which provide insights into agent performance and sentiment trends, respectively.

Deploying to production


Deploy your project to Tinybird Cloud using the Tinybird CLI:


tb --cloud deploy

This command creates production-ready, scalable API endpoints. Tinybird treats all resources as code, which means you can integrate this deployment process into your CI/CD pipeline for seamless updates. For securing your APIs, Tinybird uses token-based authentication. Here's how to call a deployed endpoint:


curl -X GET "

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

"
Conclusion


Throughout this tutorial, you've learned how to build an API for analyzing sentiment in voice call transcripts using Tinybird. By creating

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

, transforming data with pipes, and deploying to production, you've implemented a solution that can significantly enhance call center analytics. The technical benefits of using Tinybird for this use case include real-time data processing, scalability, and the ability to manage resources as code, which is crucial for agile development practices.

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

to build and deploy your first real-time data APIs in a few minutes. Tinybird is free to start, with no time limit and no credit card required.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу