IFrame erstellen
Erstellen Sie einen IFrame, um schreibgeschützte Daten von Drittanbietern in Ihre Coupa-Instanz einzubetten.
Mit IFrames können Sie Inhalte von Drittanbietern in Ihre Coupa-Instanz einbetten. Es gibt zwei Arten von IFrame-Apps:
- Schwimmende IFrames: IFrame ist persistent und befindet sich unten rechts oder auf der Seite, zu der der Benutzer navigiert. Beim Konfigurieren eines IFrame wird der Speicherort auf „Floating“ gesetzt. Siehe Floating IFrames unten.
-
Eingebettete IFrames: IFrame ist in eine bestimmte Seite eingebettet. Beim Konfigurieren eines IFrame wird der Speicherort auf eine bestimmte Seite festgelegt.
Schwimmende IFrames
IFrames enthalten eine Art schwebenden IFrame, der auf jeder Seite im Coupa-Kern erscheint. Mit schwebenden IFrames können Coupa-Administratoren jetzt ihre Tools von Drittanbietern wie Chat oder andere Hilfe-Widgets für jede Seite in Coupa hinzufügen, auf die ihre Benutzer zugreifen können. Benutzer müssen Coupa nicht verlassen, während sie Hilfe von Ihrer IT oder Ihrem Support-Team erhalten.
Coupa platziert eine kleine schwebende IFrame-Registerkarte unten rechts auf der Core-Web-Benutzeroberfläche. Die Registerkarte bleibt nicht auf einer Seite, sondern folgt dem Benutzer, wo auch immer er sich in Coupa befindet. Die Daten in der Registerkarte folgen auch dem Benutzer und verlieren keine Informationen, wenn der Benutzer wegklickt. Wenn der Benutzer auf die kleine Registerkarte klickt, wird die Registerkarte geöffnet, um den Chat-Client oder das Hilfe-Widget anzuzeigen, das der Administrator konfiguriert hat. Zu den schwebenden IFrames, die das Erweitern und Einklappen ermöglichen, gehört eine interaktive Schaltfläche zum Erweitern und Einklappen des Fensters.
Einen schwebenden IFrame erstellen
Erstellen Sie mit diesen Schritten einen schwebenden IFrame. Administratoren können bis zu drei schwebende IFrames erstellen, die rechts unten im Fenster nebeneinander angezeigt werden und sich mit jedem neuen Tab nach links bewegen.
- Wählen Sie „Konfiguration“ > „ IFrames und Panels“ und klicken Sie auf „Create“.
- Setzen Sie den Speicherort auf Floating und füllen Sie die URL aus.
- Legen Sie das Feld Kunden-ID fest. Dies ist eine eindeutige ID, die von der Drittpartei verwendet wird, um sicherzustellen, dass sie mit der richtigen Coupa Embedded App kommuniziert. Es kann jede eindeutige Zeichenfolge sein. Gleitende IFrames dürfen nicht dieselbe Client-ID aufweisen.
- Füllen Sie das Feld Deskriptor aus. Dies sind JSON-Daten, die Parameter und Daten enthalten, die mit dem Drittanbieter geteilt werden sollen. Beispiel:
{ "properties": { "App_key": { "type": "Zeichenfolge" }, "App_Secret": { "type": "Zeichenfolge" } } }
Im obigen Beispiel gibt es zwei benutzerdefinierte Eigenschaften,
app_key
undapp_secret
, beide vom Typ string. Nach dem Hinzufügen zum Deskriptorfeld werden die von Ihnen erstellten Eigenschaften dem Abschnitt App-Eigenschaften hinzugefügt. - Legen Sie die Anwendungs-URL fest. Dies ist die URL des Drittanbieters, die in der Embedded App angezeigt wird.
- Speichern Sie den Vorgang. Wenn Sie den IFrame-Eintrag erneut öffnen, können Sie den Eigenschaften, die Sie dem Abschnitt App-Eigenschaften hinzugefügt haben, Werte hinzufügen.
Um einen Demo-Floating-IFrame zu erstellen, geben Sie diese Feldwerte ein. Dadurch wird ein Beispiel-IFrame mit einer Schaltfläche zum Erweitern und Reduzieren des Fensters erstellt.
- Anwendungs-URL: https://app-bridge-example-app.herokuapp.com/
- Client-ID: 12345
Datenaustausch zwischen schwebendem IFrame und Chatbot
Dritte können mit Coupa über die Javascript Postmessage API kommunizieren. In diesem Beispiel legt der Benutzer den Namen der Eigenschaft app_secret mit dem Wert 123456 fest.
Der untenstehende Code bietet dem Dritten Zugriff auf diese eingebettete App.
// A function to send a postmessage call from your chatbot to Coupa Core and get the property value
const getSecret = () => {
const propertyName = "App_Secret";
window.parent.postMessage(
{
action: "getSecret", // Nachrichtentyp.
client_id: "Kunden-ID für den schwebenden Iframe",
iframe_id: "Iframe-ID für den schwebenden Iframe",
daten: {
key: "app_secret" // Eigenschaftsname, den Sie in diesem Fall von Floating Iframe.app_secret abrufen möchten.
}
}, "*"
);
}
// This is the listener event which will listen to the incomming postmessage events
// von Coupahost zu Ihrem Chatbot.
window.addEventListener("Nachricht", Funktion(Ereignis){
var eventData = event.data;
switch(eventData.action) {
fall „returnSecret“:
console.log(eventData.data) // Dadurch wird der Eigenschaftswert auf der Konsole des Browsers gedruckt
pause;
}
});
getSecret(); // Aufruf zum Auslösen des Postnachrichtenaufrufs, um das Geheimnis aus dem Coupa-Kern abzurufen.
Ändern der Größe eines schwebenden IFrame
Sie können die Größe von schwebenden IFrames mithilfe der JavaScript Postmessage-API ändern. Beispiel:
// Eine Funktion zum Senden eines Postnachrichtenanrufs von Ihrem Chatbot an Coupa Core, um die Größe zu ändern.
funktion Größe ändern(Optionen = {}){
window.parent.postMessage(
{
action: "Größe ändern",
client_id: "Client-ID für den schwebenden iframe",
iframe_id: "IFrame-ID für den schwebenden iframe",
daten: {
höhe: 300, // Höhe in px
breite: 300, // Breite in px
initial: options.initial // Setzen Sie dies zum Zeitpunkt des Ladens der Seite auf true, andernfalls auf false
}
}, "*" // ersetzen * durch die Coupahost-URL für mehr Sicherheit
);
}
resize({ initial: true }) // Rufen Sie diese Funktion mit initial: true zum Zeitpunkt des Neuladens der Seite auf.
größenänderung({ initial: false }) // Rufen Sie diese Funktion mit initial: false zum Zeitpunkt des Tastenklicks auf, um die Größe zwangsweise zu ändern.
In diesem Beispiel sind die Parameter wie folgt definiert:
- client_id: Wie die Client-ID, die als Floating-IFrame-Seite konfiguriert ist.
- Iframe_id: IFrame-ID des von Ihnen erstellten schwebenden IFrame. Diesen Wert erhalten Sie über die IFrame-URL.
Mit dem folgenden Code wird die ID der eingebetteten App für den Drittanbieter abgerufen:
// Auf Ihrer Chatbot-Seite hilft Ihnen der folgende Code, die Iframe-ID zu erhalten.
let urlParams = new URLSearchParams(document.location.search);
urlParams.get("floating_iframe_id") // erhält iframe id
urlParams.get("coupahost") // erhält Coupahost, der zur Verbesserung der Postnachrichtensicherheit verwendet werden kann
Parameter
- höhe: Höhe, die der IFrame in px haben soll.
- breite : Breite, die der IFrame in px haben soll.
- initial : Das anfängliche Flag kann entweder wahr oder falsch sein:
- True: Um die neueste Größe Ihres IFrame zu speichern und anzuwenden, übergeben Sie
initial: true
. Wenn Ihr IFrame beispielsweise 300 x 300 beträgt und Sie die Seite neu laden, behält das System nach dem Neuladen der Seite die gleiche Größe des IFrame bei. Wenn es keine aktuelle Größe gibt und Ihr Chatbot zum ersten Mal geladen wird, übernimmt das System die übergebene Höhe und Breite für das Größenänderungsereignis. - False: Um die Größe eines IFrame beim Klicken auf die Schaltfläche zu ändern, übergeben Sie
initial: false
. Dadurch wird die Größe des IFrame unabhängig von der zuletzt gespeicherten IFrame-Größe zwangsweise an die übergebene Höhe und Breite angepasst.
- True: Um die neueste Größe Ihres IFrame zu speichern und anzuwenden, übergeben Sie
Größenbeschränkungen
Es gibt ein Größenlimit, bis zu dem Sie die Größe Ihres IFrame ändern können.
Maximallimits
- MAX_IFRAME_HEIGHT = 600px
- MAX_IFRAME_WIDTH = 565px
Untergrenze
- MIN_IFRAME_HEIGHT = 20px
- MIN_IFRAME_WIDTH = 20px
Eingebettete IFrames
Embed IFrames anywhere Coupa unterstützt Panel-Apps und stellt spezifische Coupa-Attribute für Ihre IFrame-Callout-Abfrage bereit. Eingebettete Apps fügen bestimmten Seiten wie der Startseite, der Lieferantenseite, dem Warenkorb usw. Kontext hinzu.
IFrame einbetten
- Wählen Sie „Konfiguration“ > „Plattform“ > „Installierte Apps“.
- Klicken Sie auf „Erstellen“ und wählen Sie „Neue IFrame-App erstellen“.
- Geben Sie im Dropdown-Menü Standort den Standort der App an. Wenn Sie das Slot-Feld leer lassen, wird es auf keiner bestimmten Seite angezeigt und Sie müssen wie zuvor einen Menüpunkt für die IFrame-App erstellen. Wenn Sie einen Slot auswählen, verschwindet die Option In neuem Fenster öffnen.
Derzeit werden IFrame-Apps auf Seiten, die die neue React-Benutzeroberfläche verwenden, nicht unterstützt. Dazu gehören Spesen und Rechnungsstellung.
Verfügbare Standorte
Coupa unterstützt die folgenden Standorte:
Slot | Seite | Position auf der Seite |
---|---|---|
leer | Dedizierte Seite* | Geben Sie einen Speicherort mithilfe der konfigurierbaren Menüfunktion an |
projects.show |
Spezifische Projektzielseite | Zwischen den Abschnitten Projektfelder und zusätzliche Felder und dem Abschnitt Kommentare |
angebote/Anfragen.show |
Landingpage für spezifische Sourcing-Events | Zwischen dem Abschnitt Ereignistyp-Einstellung und dem Abschnitt Kommentare |
requisition_headers.edit |
Coupa Einkaufswagen | Zwischen dem Abschnitt „Artikel im Einkaufswagen“ und dem Abschnitt „Genehmiger“ |
suppliers.show |
Individuelle Lieferantendatens | Zwischen dem Abschnitt Coupa Supplier Portal und dem Abschnitt Supplier Contacts |
user.home |
Die Coupa-Homepage | Erscheint am Seitenende nach konfigurierbaren Startseite-Elementen |
invoices.edit |
Bestimmte Rechnung | Zwischen dem Zahlungsabschnitt und dem Verlaufsabschnitt |
receipts.full_receipt |
Spezifische Seite mit detaillierten Belegen | Nach dem Abschnitt Asset-Tags (Optional) |
asn/headers.show |
Seite mit spezifischen Lieferavis-Details | Zwischen dem Zeilenabschnitt und dem Verlaufsabschnitt |
items.show |
Individueller Positionssatz | Zwischen dem Abschnitt Lieferanten und dem Abschnitt Historie |
variabel |
Bleibt auf jeder Seite bestehen, zu der der Benutzer navigiert | Unten rechts |
*Wenn In neuem Fenster öffnen ausgewählt ist, wird die IFrame-App auf keiner Seite angezeigt und stattdessen in einer neuen Registerkarte des Browsers geöffnet. Dieses Feld steht nicht zur Auswahl, wenn Sie einen Slot für Ihre App auswählen.
IFrame-App-Abfragezeichenfolgen
Da IFrame-Apps eine externe Website oder einen externen Dienst aufrufen, fügt Coupa der Anwendungs-URL einige Abfrageparameter hinzu. Sie können diese Felder verwenden, um den Benutzer zu identifizieren und ihm eine personalisierte Erfahrung zu bieten.
Feld | Wert | Beispiel | Bedingungen |
---|---|---|---|
coupahost |
Der Name Ihrer Instanz | coupahost=demo.coupahost.com |
Wird immer sowohl für Floating- als auch für Embedded-Apps gesendet. |
user_id |
Coupa-ID für den aktuellen Benutzer | user_id=94 |
Wird immer sowohl für Floating- als auch für Embedded-Apps gesendet. |
object_type |
Kleinbuchstaben unterstrichen Singularform des ausgewählten Objekts | object_type=requisition_header |
Wird nur für eingebettete Apps gesendet. |
|
Coupa-ID für das aktuelle Objekt | object_id=21 |
Wird nur für eingebettete Apps gesendet. |
Während Coupa Benutzer- und Objektdetails im Callout bereitstellt, sind IFrame-Apps schreibgeschützt.
Überlegungen
- Für IFrame-Apps in Coupa wird nur das HTTPS-Protokoll unterstützt
- Der Kunde muss ein SSO oder angemessene Sicherheitseinschränkungen für seine IFrame-Anwendung einhalten
- Da ein IFrame einen Anwendungsdaten-/Inhaltsfluss eines Drittanbieters nutzt, kann er auf Coupa-Seite nicht gesteuert werden. Dies kann das Risiko erhöhen, eine potenzielle Schwachstelle in der Anwendung zu haben oder einfach mit einer schlechten Benutzererfahrung (wie einer automatischen Videowiedergabe) umgehen zu müssen. Es wird empfohlen, dass Kunden die IFrame-Funktionen auf die Bedürfnisse ihrer Benutzer beschränken.
- Nicht alle Anwendungen unterstützen die IFrame-Funktionen. Kunden müssen überprüfen, ob ihre Anwendung IFrames zulässt, um sie in Coupa zu verwenden
- Kunden sollten auch sicherstellen, dass die von ihnen verwendeten Webbrowser IFrames unterstützen
- Das Laden der Kundenanwendungsseiten sollte nicht länger dauern, da dies die Benutzerleistung/-erfahrung beeinträchtigen kann
- Wenn eine Anwendung eines Drittanbieters eine "X-Frame-Optionen" sendet: SAMEORIGIN" Antwortheader, diese Option verhindert, dass der Webbrowser IFrames anzeigt, die nicht auf derselben Domain wie die übergeordnete Seite gehostet werden