Programmatically Create Channel Tab (not from Configure popup) - microsoft-teams

I have a use case where I would like to create a Channel/group tab, but from code -- not from the configure experience
Where?
user in in a channel and a Task is popped up (via custom iFrame)
user selects an item from this iFrame, and a new Tab is created in that channel, pointing (Deeplinking?) to that content
The channel may not have a Tab created; I can see how you get the current Tabs for a channel in microsoftTeams.js
(ie: microsoftTeams.getTabInstances(callback: (tabInfo: TabInformation),tabInstanceParameters?: TabInstanceParameters,))
but there is no mechanism either in microsoftTeams.js -or- Microsoft Graph to create a new Tab in that channel
I attempted to use
microsoftTeams.executeDeepLink(deepLink: string, onComplete?: (status: boolean, reason?: string))
with an appropriately formatted deepLink but it silently failed
My code works OK from the "configurableTabs": [ experience
Thoughts? Missing feature?
Or am I missing something?

Please take a look at Add Tab to channel using Graph API.

Related

Start "NEW CONVERSATION" in a channel with list of questions on the text box

So I do this all the time during the day where I ask for assistance in a MS Teams channel:
I need to message the team with a template so I open a .TXT file copy paste the list of questions:
1. Short description
2. Which troubleshooting did you do?
3. Which articles did you check?"
and so on...
I'd like to be able to just use a shortcut/favourite on my browser that immediatly opens this MS Teams channel on browser window and has the list of questions/template already pasted in the chat box so I can just type in the answers. Is this doable? If so how, if now what is the closest solution possible to what I'm trying to do?
Thanks
EDIT:
So I found this question:
Teams Deeplink - hyperlink in message
It seems this function is called deeplinks.
In my cause the solution presented does not work for Channels.
Is there another way to use deeplinks in this form on Teams Channels?
Use this deep link format to navigate to a particular conversation within channel thread:
https://teams.microsoft.com/l/message//?tenantId=&groupId=&parentMessageId=&teamName=&channelName=&createdTime=
Ref Doc-https://learn.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/deep-links?tabs=teamsjs-v2#generate-deep-links-to-channel-conversation

Outlook VSTO - ActiveInspector returns the incorrect contact window's information

Globals.ThisAddIn.Application.Explorers.NewExplorer += new ExplorersEvents_NewExplorerEventHandler(DoNewExplorer);
I am trying to get the information from an email that I previously opened (by double-clicking) in outlook.
The code works fine until I open multiple emails. What I am finding is that when I click on an email, the inspector activates, but I am getting the information from the last active window, not the current one that I clicked on.
In the Activate event handler you can always call the ActiveInspector method of the Outlook Application class.
Note, the Inspectors collection contains all opened inspector windows, so you could get all of them or find the required one.
Firstly, your code tracks the Explorers.NewExplorer event, not Inspectors.NewInspector.
Secondly, for the Inspectors.NewInspector event, make sure you are using the Inspector object passed to your event handler rather than Application.ActiveInspector: by the time Inspectors.NewInspector event fires, the inspector might not yet be visible/active.

Missing GA4 event parameters

I have recently started to use Google Analytics 4 for event tracking, using Google Tag Manager to send events to Analytics. I have set up the custom variables in Tag Manager as well as in GA4.
Everything seems to work very well in Tag Manager's debug mode, and also if I look up the events in real-time view I get the requested event along with all the parameters I have set in Tag Manager. However, once I look up the events for the last couple of days in the Engagement -> Event view, a couple of my parameters are missing, and also I'm not getting the same hit count for each parameter, even though each event has all parameters set:
As you can see, 86 events have been recorded, but the event count for the parameters widely varies.
Here's a screenshot of my Tag manager settings:
I have tried to set up a new event with the same parameters, but (logically) I got the same result. I am under the strong impression I'm missing something obvious here. Does anyone have experience with this, or has anyone come across this same issue?
To be honest, you can just try to click on mark as conversion in the Events tab, and this should save them. I think for some reason GA4 doesn't save parameters otherwise...
i cant get this til work with fields and parameters for an event so i try to create a user custom dimension instead and also to send it as a content group and as user property
also i can see the user id under app instance for the standard report user explorer
but i can't filter on or select this one myself
i cant create the custom parameter reports like gerrit did
but yeah create them as custom dimensions /metric first should be the way
ga4 has a bug when you edit a standard report, you add 3 card and deselect one it still thinks you are maxed out and you have to start over...
the test internal users filters dont work, though you can see data in debug and under events, but since i know they work i know try to just make the filters active

Cannot read Outlook Sent Items with Blue Prism Mapiex Get Mail function

I tested reading mail from Sent Items with BP Mapiex Get Mail, but it only works with Inbox (default folder in action). Folder name is correct (I took it as I see it in Outlook).
Error message: Failure in Get Mail function of Blue Prism Extended
MAPI Automation. Failed to open sub-folder 'Sent Items'.
Would anyone have any ideas, what can help it work with Sent Items?
Thanks!
This is because Get Mail was configured to look in the Inbox only (and sub folders within the inbox). You can add a rule in Outlook to move the sent items to a sub-folder (then you use the Get Mail action), or add a new page in your MAPIEx object. If you go with the latter, you can proceed like this:
Open the MAPIEx object and duplicate the page called 'Get Mail', rename the page and the code stage to something else, such as Get Sent Items, then publish it. I did it this way:
Open the code stage and edit this line (line 17) so that it looks like the following, from OpenInbox() to OpenSentItems():
Editing the highlighted items is optional but preferable as it makes it easier to debug should there be issues. For instance, you would change anything that says Inbox to Sent Items.
From there you can call the action from your process just like you would call Get Mail.

How to make UILabel "live"?

I would like to add text to my app so when ever I want to change the text in Xcode, the text will also change for the user. From my understanding so far, if I want to change a UILabel, I would have to submit it to the AppStore again and the user would have to update the app in order to see the UILabel text change.
Is it possible for me to add text on the app when ever I want and it will update for the user automatically?
First you should consider the solution, that will be connecting your app to certain API service.
In other words, the service that will bring fresh data to your app, will be an API, that your code will connect to. After connection and getting response from server, data from it will be transferred to the user interface of your application.
For example - your code will be set to make requests from your app using URL, looking like this:
http://example.com/api/request/?id=100
For better imagination, if you would like to check, what this URL returns, you would type that URL to your browser. It would return some output - for example JSON, something like this:
{"label": "This is title"}
So your app (after some action, for example when a view is shown or a user taps a button) will establish connection to this URL, to be able to get this output and process it. So it will await some structure, that is needed to read by your program. In this case, the structure is a format of an output, that is JSON.
Then, your code will parse this output and gets result. So the result would be "This is title" and your UILabel would be updated with "This is title".
For URL connections and sessions, using swift3, the best choice to use is an Alamofire framework:
https://github.com/Alamofire/Alamofire
And this is very useful tutorial:
https://www.raywenderlich.com/121540/alamofire-tutorial-getting-started.
It explain, how to get an access to a service, that is capable to prepare your output (e.g. JSON), because your app will need to connect to it.
This tutorial is a solid guide, how to create a service like that.
You have to implement web services for this where your app will read data from some server, programmatically. And using this you can update your any type of data. I would suggest to read more about Objective C Basic, Web services, AFNNetworking, NSURLSession and all.

Resources