private static async Task Run(string token) { var count = 0; var api = new SlackApiClient(token); using (var rtmClient = new SlackRtmClient(token)) { await rtmClient.Connect().ConfigureAwait(false); Console.WriteLine("Connected"); rtmClient.Messages .Where(m => m.Text.Contains("ping")) .Subscribe(async m => { var user = (await api.Users.Info(m.User).ConfigureAwait(false)); Console.WriteLine($"Received ping from @{user.Name}"); await api.Chat.PostMessage(new Message { Channel = m.Channel, Text = "pong", Attachments = { new Attachment { Text = $"Count: {++count}" } } }).ConfigureAwait(false); }); await rtmClient.Events; } }
public SlackClientWrapper(string oAuthToken, string userName) { Client = new SlackRtmClient(oAuthToken); UserName = userName; Client.MessageReceived += ClientOnMessageReceived; _subscribedActivities = new HashSet <Guid>(); }
static async Task Main(string[] args) { var oauthAccessMethod = new OauthAccessMethod("Slack app client ID", "Slack app client secret", "temp auth code") { RedirectUri = "Slack app authorized redirect URL" }; var webClient = await SlackWebClientFactory.CreateWebClient("userId", oauthAccessMethod); var connectionResponse = await webClient.CallApiMethod <ConnectResponse>(new RtmConnectMethod()); var slackClient = new SlackRtmClient(); if (connectionResponse.Ok) { await slackClient.Connect(connectionResponse.Url); slackClient.BindEvent <ReactionAddedEvent>(ReactionAddedCallback); slackClient.BindEvent <ReactionRemovedEvent>(ReactionRemovedCallback); Console.WriteLine("User connected"); } Console.Read(); }
public async Task ProcessActivityBySocketAsync( BotCallbackHandler callback = null ) { await InitUserIfNeeded(); var socket = new SlackRtmClient(options.BotUserToken); await socket.Connect().ConfigureAwait(false); var sub = socket.Messages.Subscribe(async(message) => { await ProcessActivityAsync(message, callback); }); await socket.Events; sub.Dispose(); }
private static async Task StartListeningSlackEvents() { if (string.IsNullOrEmpty(_slackSettings.Token)) { Console.WriteLine("Slack token is missing from the appsettings!"); } else { using (var rtmClient = new SlackRtmClient(_slackSettings.Token)) { await rtmClient.Connect().ConfigureAwait(false); Console.WriteLine("Slack connected"); // subscribe user change events var subscription = rtmClient.Events.Where(x => x.Type == "user_change").Subscribe(async args => await HandleSlackEvent(args)); await WaitForKeyPress().ConfigureAwait(false); } } }
public void SetUp() { _slackApiClient = Substitute.For <ISlackApiClient>(); _webSocketFactory = Substitute.For <IWebSocketFactory>(); _jsonSettings = Default.JsonSettings(Default.SlackTypeResolver(Default.AssembliesContainingSlackTypes)); _testScheduler = new TestScheduler(); _sut = new SlackRtmClient(_slackApiClient, _webSocketFactory, _jsonSettings, _testScheduler); _opened = new Subject <Unit>(); _closed = new Subject <Unit>(); _errors = new Subject <Exception>(); _messages = new Subject <string>(); _webSocket = Substitute.For <IWebSocket>(); _webSocket.Opened.Returns(_opened); _webSocket.Closed.Returns(_closed); _webSocket.Errors.Returns(_errors); _webSocket.Messages.Returns(_messages); _webSocket.State.Returns(WebSocketState.None); }