I'm starting to work with XMPP, and one of the things that stood out right away to me was the fact that since subscriptions can be in just one directions, the roster can have a contact with a subscribe state of:
-none
-To
-From
-Both
The problem I have with this model is that a user can tell if someone "blocked" them (unsubscribed), hasn't approved a subscription or isnt subscribed back.
Looking at it from the messenger style, if you don't approve a subscription or remove one, you its seen as if it they had approved the subscription, but just send offline presence.
Also on the removal, XMPP states that the server must tell the contact client that you have unsubscribed from them. I know most clients wont act upon this, but it means they COULD pop up something akin to "X contact has removed you from their list". Which I think is a privacy leak. If I want to block/remove people I'd prefer them not to know and just see me offline.
Is there a specific reason of why this is this way? Is there an official way to get around it (not exposing subscription status)?
From a certain perspective, it's just always just been like this, mostly because the early Jabber developers all took the perspective that you should just say "no" when someone asked to see your presence, unless you were sure.
That said, you can use Privacy Lists to block your outgoing presence.
Related
We are building a chat app using latest ejabberd and there is a use case where user A blocks user B. the requirement is to hide last seen or user's presence from each other. if A blocks B then its easy to hide these information from user A but how can user B be informed that user A has blocked them ? whats the best approach to tell user B the someone has blocked them on realtime while both are in a conversation , like whatsapp does now.
For presence, you do not have to use block, you can simply remove contacts from roster. That way, the other user is notified and can also stop sharing his presence.
There is XEP-0191: Simple Communications Blocking:
https://xmpp.org/extensions/xep-0191.html
https://xmpp.org/extensions/attic/xep-0191-0.2.html
I think it will give you the answers you need. Now it depends how will you implement this functionality using chosen client library like Smack.
so this is something I've been trying to think through for about 16 hours. I am coding with PHP / CuRl / etc - the bot works and everything is fine. My current issue is figuring out how to disable the bot and allow a human to begin chatting with the customer/sender.
Has anyone successfully, created a route for this ? I mean it's pretty hard from what I see, you'd have to disable etc etc. A lot of effort for my clients.
Thanks for any input.
Facebook has rolled out a "Handover Protocol" which is supposed to facilitate a combined human/bot Messenger implementation.
https://developers.facebook.com/docs/messenger-platform/handover-protocol
It is a little unclear what actually occurs in step 5:
Pass thread control: At some point in the conversation, a user may choose to do something like interact with a live agent. To handle this, pass thread control from the Primary Receiver to the Secondary Receiver. The Secondary Receiver will receive a messaging_handovers webhook event to notify it that is now controls the conversation.
This doesn't actually disable the bot (as the OP requested), and isn't in the control of the Page owner but rather of the user. It seems FB envisions the user typing something like 'I would like to chat with a human' triggering the bot to pass control...but it would be nice to let the page owner simply put the app in standby and handle the messages herself.
Once you recognize someone wants to speak to a human, set a flag that disables all actions of your bot to on.
Then, have your bot message you, or whoever will respond, that a user ID needs responding to. Have your bot continue to send all messages received from them back to you until you enable the bot again.
Create some sort of way for your bot to interact with you that allows you to send a message to a specific user, and a way to once again enable the bot interaction with the user.
Probably something like "sendMessage104012301230'Hi, sorry you couldn't find [etc]', and enableUser104012301230
There may be a better way, but those are some thoughts on how I'd do it
If you enable messages echo, whenever a human respond using the page, a echo post is sent, and inside entry->messaging->message there's no app_id.
You can use that information to disable bot replies for a certain period, or disable indefinitely until you enabled is with some admin command (that's how I'm doing)
I thought a solution could be to label the message as "unsolved". Another solution could be to have the bot mark the conversation as unread. Does anyone know if it is possibile to add a label to a conversation or mark as unread through API?
I’d like to implement an “out of office” app for Facebook messages but it doesn’t seem technically possible. The idea is simple, let the user define some dates they won’t be reading Facebook messages (i.e.: they're off-line camping) so that when they get a new message we can notify the friend/sender they won’t be able to respond quickly.
I’ve been reading Facebook’s API and, although I can read user’s messages with proper authorization (read_mailbox), I cannot send messages on their behalf.
A workaround would be to get the email address of the sender, and answer with a plan email instead of a Facebook message. But getting the sender's email also requires extended permissions on a per user basis.
I could present the Send Dialog, but logically we want this to work automatically without any user interaction. Also, we could post a private status only visible to the sender, but that doesn’t seem very effective.
This is where I hit the wall. Can you think of a way to implement such functionality?
You can email to username#facebook.com (getting the username from the user id does not require any permissions) – but Facebook’s policies forbid apps from using that in general, because they say these addresses are intended for user-to-user communication.
You could make a point saying, that this was essentially user-to-user communication – but use at own risk. You’re app may be blocked if there’s spam complaints or if Facebook sees you sending a massive amount of messages this way.
I've used 'Are You Interested', a Facebook APP and when something on that app happens (such as a user sends me a message in that app) then I will see (to the left under APPS) a numeric value representing the number of new events that have happened on 'Are You Interested' since I last looked.
I want to do the same thing with my App, as it's also a niche dating site. I'd like to notify users when someone sends them a message or views their profile. I was told that I should search for app requests. However the code samples that I see seem to be slightly different than what I want to accomplish.
The information I am finding seems as though it is intended for me to allow my users to request things from their friends. That's completely different than what I want to do. There's no need for them to request anything from friends.
When I tried sending one to my test account, just to see what happens..it incremented the numeric value to the left under APPS by 1, which is a good thing, but the text was so generic, it was something like, "So and so is requesting something in [sitename]", but I don't want it to say that and I didn't see anywhere to change this text....furthermore, it added a 'Notification' to the very top of Facebook with the same generic request message. Again, that's not what I'm looking for. When I receive these APP Alerts for other apps, they don't add a 'Notification' up top of Facebook, and I don't want to either. I do believe that the code snippets I found under 'Requests' is something different than what I'm looking to achieve.
Just to summarize: I have a dating app, and people can send messages to eachother. I want an APP Alert (as I'm referring to it) to be seen to the left under Apps and also to the right in the bookmarks area, but I want the message to not be so generic and I don't want users to be selecting friends to request something. I want this action to come from my server and sent to the user that will be receiving the alert. I also do not want a facebook 'Notification' up top each time they receive a message. I hope I'm being clear in what I'm trying to accomplish. Thanks in advance for any guidance. -Chris
Jeff Lindsay, who coined the term 'webhook', said that the difference between webhook and http callback is that webhooks are user-defined. I think I understand what he meant, but I was thinking about it and I asked myself, can webhooks be effectively used by regular users (I mean: non-developers)?
Usually people don't have a clue how the internet works, they don't know what http is, terms like URL, callback, or request-response don't say anything to them. I've heard that many people do not know the difference between a web browser and a web site, they think that internet really starts at google.com and they type in all urls in the google search box... I mean, what's the use of webhooks when you're not a developer?
Do you think services like AlertGrid make sense? It's a webhook consumer that you can configure to dispatch alerts (SMS, phone, email) either when the callback is NOT received in x amount of time, or when the received data meets user-defined condition, plus it does some data visualization. We wanted it to make webhooks usable for non-developers. But still it requires an initial integration by someone who at least knows how to configure the source to send the webhook events. In many cases it only takes pasting an url to a textbox, but it seems to be beyond the skills of a typical user.
So, are the webhook doomed to be used by software developers only, or is there a chance that millions of Facebook or Twitter users will start making use of them somehow?
I think that something implemented using Webhooks can be made very user friendly.
Suppose Stack Exchange allowed users to define a webhook that would be notified whenever you earned a badge. You could supply a custom URL, or there could be simple buttons to click that would set it up for your Facebook or Twitter account. It could be as simple as the Facebook Like button.
YES I think this is a great idea. It's actually something I designed in my head a couple months ago and didn't think the product existed.
Webhooks are extremely powerful and having a 'service bus' aggregate/manage/dispatch these callbacks is extremely compelling to me.
I think that we are a long way from the general public consuming webhooks in any sort of meaningful way but I don't see why not. I remember when RSS was a 'developer' only technology.
Thanks for the link. I'll be digging in more this weekend.