How to integrate xAPI / TinCan in Unity - c#

I am new to xAPI/TinCan API so my question might be a bit general but I haven't found anything that can help me so far.
I figured it is possible to integrate xAPI into a Unity project (a game or simulation) but how exactly do I do that? (Are there any examples/documentation I can read on xAPI & Unity?)
So am I right to understand: I need a LRS, then I can use the TinCan .NET library and integrate it in Unity and then just have some conditions in my Unity code (like finish that level..) and if they are fulfilled I create a statement like in the example here (http://rusticisoftware.github.io/TinCan.NET/) and then send it to my LRS via a normal POST? And then I can see/query this learning data in my LRS for analytics?
Plus does it work for Unity standalone, mobile and web player??

An API for integrating xAPI into Unity3D has been released by the GBLxAPI open source community. This was built up from the rustici software c# library with more specific integration to the Unity game engine for collecting data for learning games. You can get access to the API from here https://gblxapi.org/community-blog-xapi-gbl/14-unity-3d-xapi-pilot-getting-started
The documentation is on the GBLxAPI GitHub site in the wiki. https://github.com/gblxapi/UnityGBLxAPI
The community also provides access to a sandbox you can test your integrations in your games to an LRS and BI tool for free as of this writing. There is also a free game demo where you can see xAPI being generated from a game.
This had been successfully integrated to a lot of games including non-learning games for collecting general game analytics using xAPI.

I have little Unity experience (other than researching others' questions on this subject) but for the most part I believe you are correct. TinCan.NET should work with Unity based on what others have said, and it provides everything you need to communicate with the LRS (so no need to do your own POST, etc. instead look at the RemoteLRS class methods).
In general I would avoid querying the LRS directly for analytics reporting, instead consider it a long lived data store that should be used to populate a reporting tool. Having said that, you can certainly see the data in an LRS. You can access a free LRS at https://cloud.scorm.com (from Rustici Software maintainers of TinCan.NET) by signing up for an account.
Note you may run into a common issue with SSL certificate validation and will want to have a look at Mono https webrequest fails with "The authentication or decryption has failed" if you do.
I can't speak to the standalone, mobile, web player question, though I'd expect anything supporting .NET should work.

Here is a simple Unity game example from HT2, a company behind Learning Locker Open Source LRS
https://github.com/HT2-Labs/unity-xapi
It is sending one xAPI statement from Start() at game initialization. I could make it working with Learning Locker and a free https://lrs.adlnet.gov/ (beware, they make your statements public here)
To make this example work:
git clone locally Unity example from github
add it to your local Unity hub
there will be warning about Unity old version of the example, select whatever Unity version you use and confirm version upgrade
open TinCanTest.cs in Visual Studio, change
string endpoint = "https://ORG_NAME.learninglocker.net/data/xAPI";
string user = "KEY";
string password = "SECRET";
to credentials of your LRS and try running the game.
Looks it uses Rustici C#/.NET TinCan library
https://github.com/RusticiSoftware/TinCan.NET
which you can install from NuGet.
As of 2019 there are other free tryout LRS limited editions:
https://cloud.scorm.com/sc/guest/SignUpForm
https://www.yetanalytics.com/xapi
https://www.watershedlrs.com/product/pricing/essentials-learning-record-store
Open Source LRS
https://github.com/LearningLocker/learninglocker
https://github.com/adlnet/ADL_LRS

Related

How to develop a chat bot with Microsoft Bot Sdk and LUIS conected

I started to learn how to develop bots with the Microsoft Bot SDK and Language Understanding Intelligent Service (LUIS)
I've seen a lot of guides and samples but I see two different ways, and I don't know how to mix them.
I find a lot of samples like this https://github.com/Microsoft/BotBuilder/tree/master/CSharp/Samples/PizzaBot where you can get advanced used of the chat bot features, but the data from LUIS comes froma json you need to download and add to your project each time it changes.
I find another sample https://code.msdn.microsoft.com/Chat-Bot-using-Bot-1211d6ce where the project gets direct conection to LUIS and deserialices the data, but in that I cannot find how to do chain dialogs.
What I want is to use IDialogs but without need to download the json.
First of all, you never need to download the json. The json the PizzaBot is providing is the LUIS model, for you to import to LUIS as an existing application. You might want to read the Importing and Exporting Applications section from the docs.
That being clarified, if you want to get started on LUIS (and many other features of the BotFramework) you can check the BotBuilder-Samples repository where you will find task focused samples and demo samples both in C# and Node.js.
In particular, I think you will find useful the LUIS sample and the MultiDialogs one

VBScript with HTML frontend

this is my first thread here and I am trying to be as accurate as possible. Furthermore I am not a native speaker so I am sorry in advance for any spelling or grammar mistakes.
I've just started working on a project to automate the parameterization of Siemens drives with the software Siemens Starter v4.4.
The project description is to write some VB-Scripts to set values in the Starter software and to have an html frontend for the user.
The problem is, that my company is always using the most recent Internet Explorer version. But unfortunetly VBS can only interface correctly with IE10 or lower.
Therefore I am wondering if it is possible to have a standalone IE10 portable installation next to the required scripts. The problem as far as I know is to access the objects used for the communication of IE and VBS.
Of course I am open for any other method of creating a simple frontend.
I am not a professional developer and have to teach myself. Despite of that I have some programming experience in C, C++, C# and VBS. Therefore I would appreciate a solution where I can find some online help and documentation for.
Thank you in advance.

Retrieve user tweets in windows store app

How can I retrieve all tweets for specific twitter user "#username" in windows store apps?
I would probably consider using an HttpWebRequest to make a call to the Twitter API.
There are a few Tweeter Wrapper around,
Checkout this wrapper : https://github.com/danielcrenna/tweetsharp
TweetSharp is a Twitter API library that greatly simplifies the task
of adding Twitter to your desktop, web, and mobile applications. You
can build simple widgets, or complex application suites using
TweetSharp. The second version, a rewrite, was designed to be lighter,
faster, and more intuitive than the original. You write fewer lines of
code, make fewer decisions, and get better results. Visual Studio T4
templates are employed to automatically generate new API methods from
a simple text-based DSL.
I posted a tutorial about that a couple of days ago. Take a look:
http://www.codeproject.com/Articles/599505/Databind-Twitter-XML-Feed-in-Windows-8
Should explain it :)

Face detection for C# in ASP.NET

I'm looking for a specific form of facial recognition. I want to detect where all the faces are located (and that's all) on an image of students in a class-picture.
So in other words, I'm not trying to compare two faces and see if they match either.
How can I do this in C#? I can't seem to find any open-source projects on NuGet regarding this, and I've looked on CodePlex too.
My personal preference for any Computer Vision related needs is to use http://opencv.willowgarage.com/wiki/ , however, it isn't natively made for C#.
However, after a quick Google search, I found http://www.emgu.com/wiki/index.php/Main_Page which says "Emgu CV is a cross platform .Net wrapper to the Intel OpenCV image processing library. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB, VC++, IronPython etc. The wrapper can be compiled in Mono and run on Linux / Mac OS X."
Now that Face has retired since it was purchased by Facebook, I use Sky Biometry, which has a C# .NET API and is free.
It's cloud based and obviously requires an Internet connection, but who cares.
I recommend checking FaceRecognition.Net (https://github.com/takuya-takeuchi/FaceRecognitionDotNet) that is base on Face Recognition (https://github.com/ageitgey/face_recognition) that is implemented in Python. Both are Open Source with MIT license.
Another option is Cognitive Services – Face that is from Microsoft and you can use it from Azure directly or from a local Docker. Here you can find more about it: https://learn.microsoft.com/en-us/azure/cognitive-services/face/

Question on Speech Recognition classes in .NET

Is it possible to have an application built using the .NET speech recognition classes and pass in a WAV file for it to go through and create a text representation of it. For example, this what I'm trying to do:
We have a QA department at my office and they have to listen to hundreds of calls a day which is quite impossible, and there's not enough people listening to everything to keep up. What I want to do is have the audio file uploaded to our server and have the server parse it and create a transcript of it. It doesn't matter if it's not perfect, but just a base which would be easier to skim through a couple of dozen lines of text than listen to a 2 hour recording.
Based on a saved transcript I can implement full-text search in the database and also run checks against the transcript if someone is saying something that's a misrepresentation.
So, is it possible to create an application using the .NET speech recognition classes and just pass the WAV file to it and it spit out a rough transcript?
I've dug around MSDN on the Speech classes briefly while thinking up the idea, so I don't have that much knowledge if it's possible to be done.
If possible, I would appreciate any examples in C#. Topic 1055347 is similar to the question I'm having, and was provided links, the most specific of which is in C++. I'm not a C++ developer, nor have I ever went to school for programming, I'm all self though C#, so I would like to stay in the language that I know.
Thanks in advance!
This sounds like you've got a call center type of application. Microsoft Speech Server has a SR engine optimized for telephony (8000 Hz sample rate), which will generate much better recognitions than the desktop SR engine. However, the engine isn't really designed for transcription (although it can do it), and the transcriptions definitely need to be reviewed before further processing occurs. Microsoft Exchange Unified Communications uses the SR engine to generate transcripts of voice mail, and while it's better than nothing, it often generates amusing nonsense.
With areas like speech recognition you are likely to either find a stand alone EXE or an API in c/c++.
For the links in the other topic, you can use a tool like P Interop Assistant to generate C# code. The C# code acts like a wrapper around the unmanaged dll, so you can call it from c#.
This is likely to be the best way to get the functionality you are looking for.
Yes.
I did such an application a few years ago on the Tablet PC; you can read about it at http://web.archive.org/web/20060615192119/www.devx.com/TabletPC/Article/30761 (At the time, I spoke of using Interop to access the libraries, but I believe that the programming model has remained the same, just with a managed wrapper.)
At the time, the results were very poor, but maybe for your use-case better than nothing.
How about route the calls to Google Voice? I'm sure there are similar services. I have been amazed at its accuracy so far, plus you can click and listen to it if required. Google Voice will forward voice calls to SMS or email.
UPDATE: On reread, maybe since you are recording calls it won't work as I yous the voice message left.

Categories