Skip to content

MANABbl4/Telemetree.Net

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TON Solutions Telemetree library for .NET

Documentation: https://docs.telemetree.io/

How to use

Add to ASP.NET

builder.Services
    .AddHttpClient("telemetree_client")
    .AddTypedClient<TelemetreeEventsHttpClient>((httpClient, sp) =>
    {
        var configTask = TelemetreeHelper.GetTelemetreeConfig("YOUR_API_KEY", "YOUR_PROJECT_ID");
        configTask.Wait();

        return new TelemetreeEventsHttpClient(configTask.Result, "YOUR_API_KEY", "YOUR_PROJECT_ID", httpClient);
    });

Or just create

    var config = await TelemetreeHelper.GetTelemetreeConfig("YOUR_API_KEY", "YOUR_PROJECT_ID");
    var telemetreeClient = new TelemetreeEventsHttpClient(configTask.Result, "YOUR_API_KEY", "YOUR_PROJECT_ID");

Send Telegram bot update data

public async Task ProcessUpdateAsync(Telegram.Bot.Types.Update update)
{
    // sending telemetree event. Could be done in parallel with handling update
    try
    {
        var telemetreeResult = await _telemetreeEventsHttpClient.SendAsync(new TelemetreeEvent()
		{
			AppName = "MyAppName",
			IsAutocapture = true,
			EventName = update.Type.ToString(),
			EventDetails = new EventDetails()
			{
				StartParameter = update.Message?.Text,
				Path = "",
				Params = new Dictionary<string, object>()
			},
			UserDetails = new EventUserDetails()
			{
				FirstName = update.Message?.From.FirstName,
				LastName = update.Message?.From.LastName,
				Username = update.Message?.From.Username,
				IsPremium = update.Message?.From.IsPremium ?? false
			},
			TelegramId = update.Message?.From?.Id.ToString(),
			Language = update.Message?.From?.LanguageCode,
			Device = "unknown",
			Timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
			SessionIdentifier = "User session guid, need to implement",
		});
    }
    catch (Exception ex)
    {
        await HandlerErrorAsync(ex);
    }
	
    // your update processing code
    var handler = update.Type switch
    {
        UpdateType.Message => BotOnMessageRecieved(update.Message!),
        UpdateType.CallbackQuery => BotOnCallBackQueryRecieved(update.CallbackQuery!),
        UpdateType.InlineQuery => BotOnInlineQueryReceived(update.InlineQuery!),
        _ => UnknownUpdateTypeHandler(update)
    };

    try
    {
        await handler;
    }
    catch (Exception ex)
    {
        await HandlerErrorAsync(ex);
    }
}

About

TON Solutions Analytics library for .NET

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages