Skip to main content

ServiceBoard

ServiceBoard is an app for managing service cases with minimal effort. The following core features are included:

  • Service cases can easily be created and can be send directly to the correct service partner
  • An easy to use video diagnosis with a service partner speeds up failure analysis
  • Exchange of 3D-models and construction plans
  • Reduction of unplanned disruptions through maintenance planning

ServiceBoard network requirements

ServiceBoard API

This is the URL where the tapio ServiceBoard receives all it's data from:

https://lcsservice.tapio.one/

Push notifications

In order to receive push notifications please read the following documentations provided by Google (Android devices) and Apple (iOS) devices:

Video diagnosis

The tapio ServiceBoard uses the Video API by Vonage to enable In-App video calls.

Please read the official guide by Vonage (formerly Tokbox) for detailed information.

Short version:

  • Open TCP port 443
  • Whitelist the following domains:
    • *.tokbox.com
    • *.opentok.com

An app link is a link that opens an app. A common example is a web browser that will be opened when clicking on http://... or a mail client that will be opened as soon as the user clicks on an email (mailto://...).

tapio ServiceBoard enables tapio partner developers to communicate with ServiceBoard through an app link which is defined as follows:

tapio-serviceboard://<createServiceCase>[?<queryParameters>]

As query parameters the following options are valid:

Query parameterRequiredDescriptionExample
servicePartnerIdyesThe id of the service partners subscription (Guid). You must provide this value otherwise there will be an error.23683e0f-3f2b-4673-8add-6a090b8606ac
machinedepends on the service partnerThe tapio machine id. You can define if this field is required or not through your service partner configuration.hg0011223344
stoppagenoSet to "1" (true) if the problem causes a machine or production stoppage. Everything other than "1" will be evaluated as false.1
problemDescriptionnoText that describes the underlying problem and provides additional information that will help the tapio service partner to help fast.
titlenoText that describes the topic of the ServiceCase
customerContactPhonenoThe phone number of the customer.+49 176 12345678
{idOfATemplateField}depends on the service partnertapio service partners can define their own fields through service partner configuration. You can use the id of this field as a query parameter as well. Templatefields are currently not supported by SerivceBoard Web

Further notes

  • There is no length limit for links. However they should be as concise as possible.
  • The values of the query parameters must be url encoded.

Example

tapio-serviceboard://createServiceCase?servicePartnerId=23683e0f-3f2b-4673-8add-6a090b8606ac&machine=hg0011223344&problemDescription=ExampleDescription%20with%0ALinebreaks

Testing

You can easily test app links with html links:

<a href="tapio-serviceboard://createServiceCase?servicePartnerId=f6190e5c-cb33-411e-9654-8e1ce2c2eb0c&machine=hg0011223344&problemDescription=Test%20with%0ALinebreaks">Test</a>

If you develop for Android devices you can use the Android Debug Bridge (adb) command line tool. Your device must be connected via USB and USB debugging must be enabled. Please note that you must escape the ampersand ('\&') for the query parameters to work.

adb shell am start -a android.intent.action.VIEW -d "tapio-serviceboard://createServiceCase?servicePartnerId=f6190e5c-cb33-411e-9654-8e1ce2c2eb0c\&machine=hg0011223344\&problemDescription=Test%20with%0ALinebreaks"

ServiceBoard Web prefill Service Case

Similar to the ServiceBoard native app we allow prefiling ServiceCase data via query parameters. We don´t want to run into limitations of query parameters so we accept only jwt tokens with a payload inside. The creation of the jwt token from your payload can be easily achieved by a lib like jose: jose on github

The created token can be appended to the create route:

https://serviceboard.tapio.one/servicecases/create?jwt=yourJWT

INTEGRATION

https://tlcsintwasbweb.azurewebsites.net/create?jwt=yourJWT

Example Implementation wit jose:

import * as jose from "jose";

const payload = {
problemDescription: "TestFall",
stoppage: true,
machine: "0000000001aabb",
title: "Test",
subscriptionId: "00000000-0000-0000-0000-000000000003",
servicePartnerId: "00000000-0000-0000-0000-000000000009",
customerContactPhone: "0788888",
}

const jwt = new jose.UnsecuredJWT(payload).encode();

console.log(jwt)
"eyJhbGciOiJub25lIn0.eyJwcm9ibGVtRGVzY3JpcHRpb24iOiJUZXN0RmFsbCIsInN0b3BwYWdlIjp0cnVlLCJtYWNoaW5lIjoiMDAwMDAwMDAwMWFhYmIiLCJ0aXRsZSI6IlRlc3QiLCJzdWJzY3JpcHRpb25JZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMyIsInNlcnZpY2VQYXJ0bmVySWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDkiLCJjdXN0b21lckNvbnRhY3RQaG9uZSI6IjA3ODg4ODgifQ."

// prefill link example:
https://serviceboard.tapio.one/servicecases/create?jwt=eyJhbGciOiJub25lIn0.eyJwcm9ibGVtRGVzY3JpcHRpb24iOiJUZXN0RmFsbCIsInN0b3BwYWdlIjp0cnVlLCJtYWNoaW5lIjoiMDAwMDAwMDAwMWFhYmIiLCJ0aXRsZSI6IlRlc3QiLCJzdWJzY3JpcHRpb25JZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMyIsInNlcnZpY2VQYXJ0bmVySWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDkiLCJjdXN0b21lckNvbnRhY3RQaG9uZSI6IjA3ODg4ODgifQ.