EWS API not returning display name for Guest user for MS Teams conversation - exchangewebservices

I am using EWS Managed API v2.2 to access MS Teams messages (from the folder: Top of Information Store->Conversation History-> Team Chat). The API result contains sender, recipient, message body, message date time. It was working great so far until guest user does not come into picture.
From MS Teams, we can invite guest user. We send meeting invitation to a guest user (any user like gmail account). Then, guest user will receive email with the invitation link. When he clicks, he will just need to provide display name and then he can enter into chat and can send and receives message in MS Team in browser.
Now, when we capture the conversation where guest user is part of; using EWS API. We are seeing following two behaviors from the EWS API result:
Guest user "sent message" has just Display name in the sender field.
Guest user "received message" has just user id like 8:teamsvisitor:0e47ccce7ee34a2683815e4070015a54 in the recipients field.
In general, we used to get user email address and display name for normal users in both sender and recipients fields. For guest users, we are seeing inconsistent in sent and received.
Now, my question is:
1. Does EWS API has any other work around to fetch both id and display name for guest user.
We are also looking if there is any MS Graph API to find display name using that user id but have not found any so far.

Related

Exchange Web Services (EWS) - How to identify if meeting participant is mail group or individual attendee

I am using EWS (Exchange Web Services) to do various operations with outlook meeting item. One of the requirement is to fetch created meeting and identify if particular participant is mail group email address or individual attendee's email address.
I could get meeting item using FindItem / GetItem however, not sure about how exactly participant's type can be checked.
Can you please suggest if any such option available with EWS ?
Thanks,
You will need a GetItem to see the attendees of a Meeting as FindItem won't return that information. Once you have the recipients you can check the MailboxType property https://learn.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.data.mailboxtype?redirectedfrom=MSDN&view=exchange-ews-api . If that doesn't work then try the FindPeople operation https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/findpeople-operation. If you using Office365 then doing a Graph lookup is probably a better and eaiser option to find that information.

Change the Display name of the Bot in the notification of a call

My company registered a Bot with the name CompanyCallBot and we'd like to change the name when the Bot starts calling.
I have an endpoint which creates an online meeting and start inviting participants and Microsoft Teams displays a box with the following information: "CompanyCallBot wants you to join a meeting".
What I'd like to do is to replace the name of the Bot by the Organizer. For example: "Ayane wants you to join to a meeting". The reason is because having the Bot name, the participants don't know who is calling.
A solution could be to set the Subject of the meeting to:
Subject = "on behalf of {Organizer's name}"
, this way you receives a call with the next display information: "CompanyCallBot wants you to join on behalf of Ayane".
Such approach doesn't work very well in mobiles because you can either receive calls with the following notifications:
"Unknow"
"Group call"
"Group call on behalf of Ayane"
How can I substitute the name of the Bot during the call by the organizer and how to control what it is displayed in mobiles.

How can a Chat bot mention a user that is not yet in the room?

I am trying to build a chatbot that will invite a user in a room where the Bot already is, but not yet the user.
User wants to join Room A
User DM the Bot and ask "invite me to Room A"
Bot, already in room A, mentions User
User is pulled in the room.
Currently, my bot can start a thread and mention a user, but the mention will work (showing #Username) only if Username is already in the room.
If Username is not in the room, it will show <users/1234....>.
Is there a way to do that?
Or in general, can a bot invite a user in a room?
Short answer: No.
Explanation: If you refer to Bot access to user data you'll find that -
In order to operate in a useful way, a bot needs to know who is invoking it, and how to address that person. Beyond this basic identity data, bots do not have access to user data unless granted explicitly by the user:
By default, bots can only read the basic identity of users that invoke them. This information includes the user's display name, user ID, email address, and avatar image.
If a bot needs to access other data to do its job, it can prompt the user to grant it additional access.
Hope this helps!

DocuSign - Embedded Recipient that is also a DocuSign User needs to view Envelope in their Inbox

I have a web application wherein our users create contracts and we have integrated with DocuSign through an embedded recipient experience.
My web application is fairly involved in gathering the appropriate signers, sending emails, requesting signatures, keeping up with signer statuses, etc., and so I believe that an embedded recipient experience makes the most sense for us.
However, our first client using the integration has already been using DocuSign for some time and their signers (CEOs, CFOs and the like) are accustomed to logging into DocuSign, seeing envelopes in their inbox and clicking on them to sign - which is only possible in an integration by adding them as remote recipients. Embedded recipients cannot be associated to a DocuSign user account.
I'd like to keep using embedded recipients, but my client desperately wants to see envelopes created from my application in their DocuSign user account inbox and sign them from there without first having to log into my application.
Is there any clever way to deliver such a request with an embedded recipient experience? Even an atypical workaround, like sharing documents between the embedded recipient and the user account or some other recipient type of which I'm not aware, etc.?
Unfortunately not. When creating an embedded signing session the recipient becomes what's referred to as a Captive Recipient. Captive Recipients follow a different set of rules in regards to email notifications and presence in an inbox.
For example, Captive Recipients don't receive email notifications by default -- but they can supply an email to be CC'ed onto the envelope.
Since the Captive Recipient also has a universal account number, the user is technically part of an account outside of yours or your recipients.
IE: Your recipient views his inbox linked to his userId on account XXXXXXXXX.
The Captive Recipient is part of account YYYYYYYYYY with its own unique userId, so there's nothing for it to match up to.
If your app relies on embedded signing to load DocuSign envelopes into something like an iFrame, you can still do that without using an embedded recipient, which would give you the ability to load them through your webApp as well as let your signer access them via his DocuSign inbox.
To retrieve the signing URL, you make a POST call to https://{endpoint}.docusign.net/restapi/v2/accounts/{accountId}/envelopes/{envelopeId}/views/recipient with the following call body:
{
"returnUrl": "http://localhost/returnUrl",
"authenticationMethod":"email",
"email": "{recipientEmail}",
"userName": "{recipientFullName}",
"recipientId":"{recipientId}"
}

Tough automation issue - subscribe to email subscriptions

The problem....
We have a Web Application that bring in articles from various sources such as (google, bing, yandex).
We wish to add another source.  The source is email subscriptions from scientific journals of which there are thousands.
We want our userbase to be able to signup for email subscriptions and pull them into the Web Application.  As the subscription process requires an email and a confirmation of email step, this is pretty user unfriendly if an admin has to go and check emails all the time.  We have a proposed workflow and would be interested to implement something like the following.
Proposed workflow
User goes to a custom subscription management page in our web
application
User enters the name of the subscription.
User presses 'save' User receives a unique email address from the application (i.e. subscription1233167845#mydomain.com)
user then takes this email and uses it to sign up for the email subscription with the scientific journal
system receives email from scientific journal asking for confirmation
system automatically verifies email address
email alerts received for journal
From here there are 2 possibilities
1) the application parses all resources in email and extracts links
which are submitted to the applications custom crawler
2) information
is scraped directly from email and added to the web application list
of articles
can it be done? Do you have a better way?? Thoughts?