The very first step is to allow Serenytics to post messages in the channels of your Slack workspace.
To do that, in Serenytics, open the configuration tab in the Admin section. Then click on the button "Add to slack":
This will popup a window (from the Slack website) asking you to allow Serenytics to get the list of your channels and post in them. You need to allow these actions and then, you will be redirected to Serenytics:
Once your Slack integration is configured, you will see this message in the Admin/configuration section:
import serenytics
client = serenytics.Client()
source = client.get_data_source_by_uuid(uuid='MY_SOURCE_UUID')
kpi = source.get_value_formula("sales_of_the_day")
client.send_slack_msg('sales', 'Sales data', attachments=[
{
"text": f'Sales of the day: ${kpi}',
"color": "#2b4e82"
}
])
When you run the script (from the Execution tab), you will receive this message in Slack:If you want to learn how to customize the formatting of your messages, the best way is to use the Slack Message Builder.Using the Python client to access your data and a bit of Slack messages formatting, you can create some nice messages.
For example, let's say we have a datasource, with three columns: datetime, user, nb_of_points (that could be sales for a salesteam, number of tasks achieved by an operational team...).
To send the top 3 performers of the day, we need to create a Python automation and to schedule it at the end of each workday. Its code needs to retrieve the top 3 performers from the datasource and to send it to Slack:
import serenytics
client = serenytics.Client()
source = client.get_data_source_by_uuid(uuid=MY_SOURCE_UUID)
# define the query to the Serenytics datasource
options = {
'order': 'row_by_row',
'data_processing_pipeline': [{
'group_by': ['authenticated_user_name'],
'order_by': [{'name': '$$count$$', 'agg_function': 'sum', 'direction': 'desc'}],
'select': [{'name': 'authenticated_user_name'},
{'name': '$$count$$', 'agg_function': 'sum'}],
'where': [{'name': 'serenytics_timestamp', 'op': 'in', 'value': 'day(0)'}],
'limit': 3,
}]
}
# run the query
data = source.get_data(options=options)
# format the message from the data obtained
full_msg = f':first_place_medal: {data.rows[0][0]} with {data.rows[0][1]} points\n'
full_msg += f':second_place_medal: {data.rows[1][0]} with {data.rows[1][1]} points\n'
full_msg += f':third_place_medal: {data.rows[2][0]} with {data.rows[2][1]} points'
# send it to slack
client.send_slack_msg('sales', 'Top 3 of the day!', attachments=[
{
"text": full_msg,
"color": "#2b4e82"
}
])
You will receive this message in Slack:That's all for this tutorial. You can now schedule Slack messages with KPIs in a few lines of Python!