I've built an app that receives events.
By default, the scope channels:history lets it receive events for all messages in all public channels of the user who added the app.
Ideally the user would be able to limit it to only some channels, right in app settings. (Any event the app receives will be made world readable.)
Right now I see 2 options:
The message event contains the channel id (not the name). So code can filter on channel, assuming there is a way to set it and the user trusts it.
Create a bot user (even though the app is read-only) that the user can add to specific channels.
Is there a better way?
If you don't want to use a bot user (your option 2) the only way is to filter out the messages from unwanted channels in your app. You will receive a message event for every new message created (including the ones sent from your app).
The message event does already contain the channel ID, so you can easily filter based on that.
Example: (Source)
{
"type": "message",
"channel": "C2147483705",
"user": "U2147483697",
"text": "Hello world",
"ts": "1355517523.000005"
}
There is no parameter in the event settings that allows you to choose the channels beforehand. But since this appears to be a reoccurring question, I would suggest to send a feature request to the Slack team about this.
Related
We are using the graph API to send a message to the General channel of a Microsoft Team, which has a number of members.
We would like to allow any members to interact with the message via an adaptive card.
This is doable using say Action.OpenUrl or .Submit, however we need to know which user it is which is interacting. I imagine this must be a fairly common thing to do.
What solutions and options are available to do this?
For example, is it possible to obtain the user's Team id at the time an action is invoked ?
Every activity sent to the bot has a from property that identifies the user that sent the activity. You can see the full activity schema here. I advise you to run your bot in debug mode so that you can see all the data your bot receives. If you want to run your bot in debug mode and talk to the bot using Teams instead of Emulator, you can use tunneling: https://learn.microsoft.com/azure/bot-service/bot-service-debug-channel-ngrok
I'm new using the Firebase Cloud Message. I built an IOS app to receive push notifications. The app works fine. I send messages from the Firebase console and they're displayed correctly.
Now I`m trying to build an web api to allow my customer to send the push messages (without accessing the firebase console). Studying the documentation here I realized that I've always to have a "to", meaning a group, topic or device id.
My question is: can I send a message to all devices (like I can do in the console)? I yes, how so?
Thanks in advance!
You can make use of topics. Given that all of your users are subscribed to a specific one. Just like what I mentioned here (removed some parts, just check them out if you want):
If you are looking for a payload parameter to specify that you intend the message for all your users, unfortunately, it doesn't exist.
Commonly, when sending notifications to multiple users, you can make use of the registration_ids parameter instead of to. However, it only has a maximum of 1000 registration tokens allowed. If you intend to use this, you can make batch requests of 1000 registration tokens each, iterating over all the registration tokens you've stored in your app server.
However, do keep in mind that Diagnostics for messages sent to Topics are not supported.
I found this:
!('TopicA' in topics)
With this expression, any app instances that are not subscribed to
TopicA, including app instances that are not subscribed to any topic,
receive the message.
So you could probably use
condition="!('nonExistingTopic' in topics)"
I am using parse to handle push notifications. I've added channels based on the city the user is in and the gender of the user. I want to send a push notification to all male users in LA. However, when I create two separate channel conditions in the parse dashboard, the "number of devices that the push will be sent to" is way off. For example:
When I add the condition for the channel "users in la" it says there are 1400 devices.
Then I add a separate condition for the channel "male", and it updates the number of devices to 4000. Note that I am creating two separate channels here, not adding both channels to the same condition, but it still appears to be performing an or instead of an and.
I simply used tags for conditions that I wanted to and -- the webview does not support and'ing between channels.
I am able to establish 1-1 chat by creating a room. I have used room because I will get history of last 50 messages (I would prefer more in number with paged results and expecting this feature in the near future).
I am unable to figure out how I can implement image and video sharing in between the text chat.
I also want this in the history I get. I mean I need to get the order of the text/image/video along with their details to display to the user.
When I upload an image file using Content module, the files are saved in a separate table in contents section (which is fine for user's gallery kind of app). But for chat we need to know who sent to whom and what (image/video/text).
I would like to know whether this is possible with the current version of the Quickblox sdk. or else is there any way we can establish this using Custom objects module? If possible, will this work if there are more number of users in the room? Please give me a solution to this.
If you want create chat with content, you need to use a Custom Objects. (in current QB version).
Advantage - you can also get chat history and implement deleting of message history.
But this method doesn't very simply.
At first you need create Custom objects represented next things:
single chat message
group chat message
(may be need create extended user profile)
At first, you can use QBChat module for changing service information between users.
When you need send message, you create Custom Object (CO) - message with parameters and upload it. When it uploading, you send service message via QB chat to your opponent user. When opponent will receive it, he should perform request for updating CO (in this case - single message).
As example, single chat message can contain next parameters:
opponent qb user id;
owner qb user id;
message text;
link to content;
Sending of content message divide to next steps:
At first, you need upload content file using Content module, and after this create message CO, upload it on server and send service message to your opponent
We have a need to fetch notifications for a particular user. By notifications, I mean the "Alert" items that appear in the D2L minibar (Message alerts, Update alerts, Subscription alerts).
We want to integrate some of these items into our CMS' menu.
I see that D2L offers a Notifications API:
http://docs.valence.desire2learn.com/res/user.html#id1
Question 1: Is the notifications API flexible enough to grab the items described above for a user?
Question 2:
To experiment with the notifications API, I tried using the following API call:
http://docs.valence.desire2learn.com/res/user.html#get--d2l-api-lp-%28D2LVERSION-version%29-notifications-instant-carriers-
And a 403 error was encountered.
The documentation states:
These routes depend upon the back-end service having the Notifications tool active. If the service does not have the Notifications tool active, then all calls to these routes will result in authorization (403) error results.
Where is the option in the backend to toggle this setting? Is this setting available in DOME somewhere?
Question 3: For the Alert items, is there a static link to view these items on D2L?
For example, I am able to access the:
Pager - at
example.desire2learn.com/d2l/lms/pager/messageList.d2l?ou=ORGID
Email - at example.desire2learn.com/d2l/lms/email/frame.d2l?ou=ORGID
But, there doesn't appear to be a way to access the "Update Alerts" and "Subscription Alerts" items from a static link. They only appear via AJAX when you click on these icons in the minibar. If I am overlooking where these links are, please let me know.
The answer will be long-ish, and probably isn't what you want to hear. First off, there is a strong distinction between "alerts" (the items that show up in the minibar) and "notifications". The Notifications API is simply exposing the "Instant Notifications preference" table that you can see when you open your user's Notifications settings page (the page at url: http://yourLMS.edu/d2l/Notifications/Settings).
The types of messages that can be sent as a "notification" are the rows in the Instant Notifications table; the "carriers", or endpoints, for them are the columns of checkboxes. The Notifications API exposes this table, letting you retrieve it's current state, and change the setting for a checkbox at the vertex of a notification messageTypeId and a carrierId.
So, to answer your specific questions:
Question 1. No, the Notifications API does not currently provide any access to the alerts that appear in the minibar control in the LMS' web UI.
Question 2. Your 403 may indicate that your calling user context does not have the permission required to use the Notifications tool: the calling user must have a role that grants them the ability to Receive Instant Notifications -- without that, the API call to retrieve the carriers list results in a 403.
If your org has had the Notifications tool turned off entirely, then it's likely no user will be able to see their Notifications setting page through the Web UI, and to turn it back on may require your organization to call D2L's support desk to have it turned back on: I'm not sure that client organization admins have the ability to select what tools are on and which are off without intervention from the support desk.
Question 3. I do not believe there is a static page for the Update and Subscription alert lists.