Telegram notifications with AccessRights.None
Telegram notifications with AccessRights.None
02 Jun 2023, 00:41
Hi all,
I have already developed several tests to use telegram notifications using AccessRights.None.
This is the simplest code using HttpClient that I developed. It works if it is AccessRights.FullAccess, if it is AccessRights.None it gives the error described below.
Can anyone assist me in this regard or is it a cAlgo bug? Thanks in advance!!
TEST: EXCEPTION: One or more errors occurred. (The type initializer for 'System.Net.CookieContainer' threw an exception.)
in System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
in System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
in System.Threading.Tasks.Task`1.get_Result()
in cAlgo.AllInOneDataByDelFonseca.SendTelegram(String msg)
using System;
using cAlgo.API;
using System.Net.Http;
namespace cAlgo
{
[Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
public class TelegramSample : Indicator
{
[Parameter("Token", DefaultValue = "")]
public string TOKEN { get; set; }
[Parameter("ChatId", DefaultValue = "")]
public string CHATID { get; set; }
private HttpClient httpClient;
protected override void Initialize()
{
httpClient = new HttpClient();
}
public void SendTelegram(string msg)
{
try
{
var url = $"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={CHATID}&text={msg}";
var response = httpClient.GetAsync(url).Result;
if (!response.IsSuccessStatusCode)
{
msg += $": Error Sending Telegram Message: {response.StatusCode}, {response.Content.ReadAsStringAsync().Result}";
}
else
{
msg += ": Success";
}
}
catch (Exception e)
{
msg += ": EXCEPTION : " + e.Message + "\n\n" + e.StackTrace;
}
Print(msg);
}
public override void Calculate(int index)
{
SendTelegram("Hello World.");
}
}
}
Replies
DelFonseca
02 Jun 2023, 22:56
RE:
firemyst said:
(...)
The example in the video does not work as it requires AccessRights.FullAccess.
According to the documentation, the example I shared should work with AccessRights.None, but it gives the error that is in my thread.
I don't know if I'm missing something because I've tried several methods without success to make it work with AccessRights.None
@DelFonseca
DelFonseca
03 Jun 2023, 19:45
[SOLVED]
Problem solved. My cTrader was not up to date, follow the code below with HttpClient replaced by cAlgo.API.Http.
Thanks to "The T"
using System;
using cAlgo.API;
namespace cAlgo
{
[Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
public class TelegramSample : Indicator
{
[Parameter("Token", DefaultValue = "")]
public string TOKEN { get; set; }
[Parameter("ChatId", DefaultValue = "")]
public string CHATID { get; set; }
protected override void Initialize()
{
}
public void SendTelegram(string msg)
{
try
{
var url = $"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={CHATID}&text={msg}";
var response = Http.Get(url);//httpClient.GetAsync(url).Result;
if (!response.IsSuccessful)
{
msg += $": Error Sending Telegram Message: {response.StatusCode}, {response.Body}";
}
else
{
msg += ": Success";
}
}
catch (Exception e)
{
msg += ": EXCEPTION : " + e.Message + "\n\n" + e.StackTrace;
}
Print(msg);
}
public override void Calculate(int index)
{
SendTelegram("Hello World.");
}
}
}
@DelFonseca
firemyst
02 Jun 2023, 03:52
Examples you can look at to see irf they help?
And also watching this video:
@firemyst