@webex/internal-plugin-llm 3.0.0-beta.39 → 3.0.0-beta.391

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/llm.js CHANGED
@@ -56,35 +56,24 @@ exports.config = config;
56
56
  var LLMChannel = /*#__PURE__*/function (_ref) {
57
57
  (0, _inherits2.default)(LLMChannel, _ref);
58
58
  var _super = _createSuper(LLMChannel);
59
- /**
60
- * If the LLM plugin has been registered and listening
61
- * @instance
62
- * @type {Boolean}
63
- * @public
64
- */
65
-
66
- /**
67
- * Initializes the LLM Plugin
68
- * @constructor
69
- * @public
70
- */
71
59
  function LLMChannel() {
72
60
  var _this;
73
61
  (0, _classCallCheck2.default)(this, LLMChannel);
74
62
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
75
63
  args[_key] = arguments[_key];
76
64
  }
77
- // eslint-disable-next-line constructor-super
78
65
  _this = _super.call.apply(_super, [this].concat(args));
79
66
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.LLM);
80
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "registered", false);
81
67
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "webSocketUrl", void 0);
82
68
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "binding", void 0);
83
69
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusUrl", void 0);
84
70
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "register", function (llmSocketUrl) {
85
71
  return _this.request({
86
72
  method: 'POST',
87
- url: llmSocketUrl
73
+ url: llmSocketUrl,
74
+ body: {
75
+ deviceUrl: _this.webex.internal.device.url
76
+ }
88
77
  }).then(function (res) {
89
78
  _this.webSocketUrl = res.body.webSocketUrl;
90
79
  _this.binding = res.body.binding;
@@ -97,13 +86,11 @@ var LLMChannel = /*#__PURE__*/function (_ref) {
97
86
  return _this.register(datachannelUrl).then(function () {
98
87
  if (!locusUrl || !datachannelUrl) return undefined;
99
88
  _this.locusUrl = locusUrl;
100
- _this.connect(_this.webSocketUrl).then(function () {
101
- _this.registered = true;
102
- });
89
+ _this.connect(_this.webSocketUrl);
103
90
  });
104
91
  });
105
92
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isConnected", function () {
106
- return _this.registered;
93
+ return _this.connected;
107
94
  });
108
95
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getBinding", function () {
109
96
  return _this.binding;
@@ -113,21 +100,13 @@ var LLMChannel = /*#__PURE__*/function (_ref) {
113
100
  });
114
101
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "disconnectLLM", function () {
115
102
  return _this.disconnect().then(function () {
116
- _this.registered = false;
117
103
  _this.locusUrl = undefined;
118
104
  _this.binding = undefined;
119
105
  _this.webSocketUrl = undefined;
120
106
  });
121
107
  });
122
- _this.registered = false;
123
108
  return _this;
124
109
  }
125
-
126
- /**
127
- * Register to the websocket
128
- * @param {string} llmSocketUrl
129
- * @returns {Promise<void>}
130
- */
131
110
  return (0, _createClass2.default)(LLMChannel);
132
111
  }(_internalPluginMercury.default);
133
112
  exports.default = LLMChannel;
package/dist/llm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["config","llm","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","backoffTimeMax","MERCURY_BACKOFF_TIME_MAX","backoffTimeReset","MERCURY_BACKOFF_TIME_RESET","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY","LLMChannel","args","LLM","llmSocketUrl","request","method","url","then","res","webSocketUrl","body","binding","catch","error","logger","locusUrl","datachannelUrl","register","undefined","connect","registered","disconnect","Mercury"],"sources":["llm.ts"],"sourcesContent":["/* eslint-disable consistent-return */\n\nimport Mercury from '@webex/internal-plugin-mercury';\n\nimport {LLM} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {ILLMChannel} from './llm.types';\n\nexport const config = {\n llm: {\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n /**\n * Maximum milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,\n /**\n * Initial milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n },\n};\n\n/**\n * LLMChannel to provide socket connections\n */\nexport default class LLMChannel extends (Mercury as any) implements ILLMChannel {\n namespace = LLM;\n\n /**\n * If the LLM plugin has been registered and listening\n * @instance\n * @type {Boolean}\n * @public\n */\n private registered = false;\n\n private webSocketUrl?: string;\n\n private binding?: string;\n\n private locusUrl?: string;\n\n /**\n * Initializes the LLM Plugin\n * @constructor\n * @public\n */\n constructor(...args) {\n // eslint-disable-next-line constructor-super\n super(...args);\n\n this.registered = false;\n }\n\n /**\n * Register to the websocket\n * @param {string} llmSocketUrl\n * @returns {Promise<void>}\n */\n private register = (llmSocketUrl: string): Promise<void> =>\n this.request({\n method: 'POST',\n url: llmSocketUrl,\n })\n .then((res: {body: {webSocketUrl: string; binding: string}}) => {\n this.webSocketUrl = res.body.webSocketUrl;\n this.binding = res.body.binding;\n })\n .catch((error: any) => {\n this.logger.error(`Error connecting to websocket: ${error}`);\n throw error;\n });\n\n /**\n * Register and connect to the websocket\n * @param {string} locusUrl\n * @param {string} datachannelUrl\n * @returns {Promise<void>}\n */\n public registerAndConnect = (locusUrl: string, datachannelUrl: string): Promise<void> =>\n this.register(datachannelUrl).then(() => {\n if (!locusUrl || !datachannelUrl) return undefined;\n this.locusUrl = locusUrl;\n this.connect(this.webSocketUrl).then(() => {\n this.registered = true;\n });\n });\n\n /**\n * Tells if LLM socket is connected\n * @returns {boolean} isRegistered\n */\n public isConnected = (): boolean => this.registered;\n\n /**\n * Tells if LLM socket is connected\n * @returns {bool} isRegistered\n */\n public getBinding = (): string => this.binding;\n\n /**\n * Get Locus URL for the connection\n * @returns {string} locus Url\n */\n public getLocusUrl = (): string => this.locusUrl;\n\n /**\n * Disconnects websocket connection\n * @returns {Promise<void>}\n */\n public disconnectLLM = (): Promise<void> =>\n this.disconnect().then(() => {\n this.registered = false;\n this.locusUrl = undefined;\n this.binding = undefined;\n this.webSocketUrl = undefined;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAEA;AAEA;AAAgC;AAAA;AAIzB,IAAMA,MAAM,GAAG;EACpBC,GAAG,EAAE;IACH;AACJ;AACA;AACA;IACIC,YAAY,EAAEC,OAAO,CAACC,GAAG,CAACC,qBAAqB,IAAI,KAAK;IACxD;AACJ;AACA;AACA;IACIC,WAAW,EAAEH,OAAO,CAACC,GAAG,CAACG,oBAAoB,IAAI,KAAK;IACtD;AACJ;AACA;AACA;IACIC,cAAc,EAAEL,OAAO,CAACC,GAAG,CAACK,wBAAwB,IAAI,KAAK;IAC7D;AACJ;AACA;AACA;IACIC,gBAAgB,EAAEP,OAAO,CAACC,GAAG,CAACO,0BAA0B,IAAI,IAAI;IAChE;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAET,OAAO,CAACC,GAAG,CAACS,yBAAyB,IAAI;EAC5D;AACF,CAAC;;AAED;AACA;AACA;AAFA;AAAA,IAGqBC,UAAU;EAAA;EAAA;EAG7B;AACF;AACA;AACA;AACA;AACA;;EASE;AACF;AACA;AACA;AACA;EACE,sBAAqB;IAAA;IAAA;IAAA,kCAANC,IAAI;MAAJA,IAAI;IAAA;IACjB;IACA,gDAASA,IAAI;IAAE,wFAvBLC,cAAG;IAAA,yFAQM,KAAK;IAAA;IAAA;IAAA;IAAA,uFAyBP,UAACC,YAAoB;MAAA,OACtC,MAAKC,OAAO,CAAC;QACXC,MAAM,EAAE,MAAM;QACdC,GAAG,EAAEH;MACP,CAAC,CAAC,CACCI,IAAI,CAAC,UAACC,GAAoD,EAAK;QAC9D,MAAKC,YAAY,GAAGD,GAAG,CAACE,IAAI,CAACD,YAAY;QACzC,MAAKE,OAAO,GAAGH,GAAG,CAACE,IAAI,CAACC,OAAO;MACjC,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAU,EAAK;QACrB,MAAKC,MAAM,CAACD,KAAK,0CAAmCA,KAAK,EAAG;QAC5D,MAAMA,KAAK;MACb,CAAC,CAAC;IAAA;IAAA,iGAQsB,UAACE,QAAgB,EAAEC,cAAsB;MAAA,OACnE,MAAKC,QAAQ,CAACD,cAAc,CAAC,CAACT,IAAI,CAAC,YAAM;QACvC,IAAI,CAACQ,QAAQ,IAAI,CAACC,cAAc,EAAE,OAAOE,SAAS;QAClD,MAAKH,QAAQ,GAAGA,QAAQ;QACxB,MAAKI,OAAO,CAAC,MAAKV,YAAY,CAAC,CAACF,IAAI,CAAC,YAAM;UACzC,MAAKa,UAAU,GAAG,IAAI;QACxB,CAAC,CAAC;MACJ,CAAC,CAAC;IAAA;IAAA,0FAMiB;MAAA,OAAe,MAAKA,UAAU;IAAA;IAAA,yFAM/B;MAAA,OAAc,MAAKT,OAAO;IAAA;IAAA,0FAMzB;MAAA,OAAc,MAAKI,QAAQ;IAAA;IAAA,4FAMzB;MAAA,OACrB,MAAKM,UAAU,EAAE,CAACd,IAAI,CAAC,YAAM;QAC3B,MAAKa,UAAU,GAAG,KAAK;QACvB,MAAKL,QAAQ,GAAGG,SAAS;QACzB,MAAKP,OAAO,GAAGO,SAAS;QACxB,MAAKT,YAAY,GAAGS,SAAS;MAC/B,CAAC,CAAC;IAAA;IAjEF,MAAKE,UAAU,GAAG,KAAK;IAAC;EAC1B;;EAEA;AACF;AACA;AACA;AACA;EAJE;AAAA,EA7BuCE,8BAAO;AAAA"}
1
+ {"version":3,"names":["config","llm","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","backoffTimeMax","MERCURY_BACKOFF_TIME_MAX","backoffTimeReset","MERCURY_BACKOFF_TIME_RESET","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY","LLMChannel","LLM","llmSocketUrl","request","method","url","body","deviceUrl","webex","internal","device","then","res","webSocketUrl","binding","catch","error","logger","locusUrl","datachannelUrl","register","undefined","connect","connected","disconnect","Mercury"],"sources":["llm.ts"],"sourcesContent":["/* eslint-disable consistent-return */\n\nimport Mercury from '@webex/internal-plugin-mercury';\n\nimport {LLM} from './constants';\n// eslint-disable-next-line no-unused-vars\nimport {ILLMChannel} from './llm.types';\n\nexport const config = {\n llm: {\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n /**\n * Maximum milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,\n /**\n * Initial milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n },\n};\n\n/**\n * LLMChannel to provide socket connections\n */\nexport default class LLMChannel extends (Mercury as any) implements ILLMChannel {\n namespace = LLM;\n\n /**\n * If the LLM plugin has been registered and listening\n * @instance\n * @type {Boolean}\n * @public\n */\n\n private webSocketUrl?: string;\n\n private binding?: string;\n\n private locusUrl?: string;\n\n /**\n * Register to the websocket\n * @param {string} llmSocketUrl\n * @returns {Promise<void>}\n */\n private register = (llmSocketUrl: string): Promise<void> =>\n this.request({\n method: 'POST',\n url: llmSocketUrl,\n body: {deviceUrl: this.webex.internal.device.url},\n })\n .then((res: {body: {webSocketUrl: string; binding: string}}) => {\n this.webSocketUrl = res.body.webSocketUrl;\n this.binding = res.body.binding;\n })\n .catch((error: any) => {\n this.logger.error(`Error connecting to websocket: ${error}`);\n throw error;\n });\n\n /**\n * Register and connect to the websocket\n * @param {string} locusUrl\n * @param {string} datachannelUrl\n * @returns {Promise<void>}\n */\n public registerAndConnect = (locusUrl: string, datachannelUrl: string): Promise<void> =>\n this.register(datachannelUrl).then(() => {\n if (!locusUrl || !datachannelUrl) return undefined;\n this.locusUrl = locusUrl;\n this.connect(this.webSocketUrl);\n });\n\n /**\n * Tells if LLM socket is connected\n * @returns {boolean} connected\n */\n public isConnected = (): boolean => this.connected;\n\n /**\n * Tells if LLM socket is binding\n * @returns {string} binding\n */\n public getBinding = (): string => this.binding;\n\n /**\n * Get Locus URL for the connection\n * @returns {string} locus Url\n */\n public getLocusUrl = (): string => this.locusUrl;\n\n /**\n * Disconnects websocket connection\n * @returns {Promise<void>}\n */\n public disconnectLLM = (): Promise<void> =>\n this.disconnect().then(() => {\n this.locusUrl = undefined;\n this.binding = undefined;\n this.webSocketUrl = undefined;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAEA;AAEA;AAAgC;AAAA;AAIzB,IAAMA,MAAM,GAAG;EACpBC,GAAG,EAAE;IACH;AACJ;AACA;AACA;IACIC,YAAY,EAAEC,OAAO,CAACC,GAAG,CAACC,qBAAqB,IAAI,KAAK;IACxD;AACJ;AACA;AACA;IACIC,WAAW,EAAEH,OAAO,CAACC,GAAG,CAACG,oBAAoB,IAAI,KAAK;IACtD;AACJ;AACA;AACA;IACIC,cAAc,EAAEL,OAAO,CAACC,GAAG,CAACK,wBAAwB,IAAI,KAAK;IAC7D;AACJ;AACA;AACA;IACIC,gBAAgB,EAAEP,OAAO,CAACC,GAAG,CAACO,0BAA0B,IAAI,IAAI;IAChE;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAET,OAAO,CAACC,GAAG,CAACS,yBAAyB,IAAI;EAC5D;AACF,CAAC;;AAED;AACA;AACA;AAFA;AAAA,IAGqBC,UAAU;EAAA;EAAA;EAAA;IAAA;IAAA;IAAA;MAAA;IAAA;IAAA;IAAA,wFACjBC,cAAG;IAAA;IAAA;IAAA;IAAA,uFAoBI,UAACC,YAAoB;MAAA,OACtC,MAAKC,OAAO,CAAC;QACXC,MAAM,EAAE,MAAM;QACdC,GAAG,EAAEH,YAAY;QACjBI,IAAI,EAAE;UAACC,SAAS,EAAE,MAAKC,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACL;QAAG;MAClD,CAAC,CAAC,CACCM,IAAI,CAAC,UAACC,GAAoD,EAAK;QAC9D,MAAKC,YAAY,GAAGD,GAAG,CAACN,IAAI,CAACO,YAAY;QACzC,MAAKC,OAAO,GAAGF,GAAG,CAACN,IAAI,CAACQ,OAAO;MACjC,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAU,EAAK;QACrB,MAAKC,MAAM,CAACD,KAAK,0CAAmCA,KAAK,EAAG;QAC5D,MAAMA,KAAK;MACb,CAAC,CAAC;IAAA;IAAA,iGAQsB,UAACE,QAAgB,EAAEC,cAAsB;MAAA,OACnE,MAAKC,QAAQ,CAACD,cAAc,CAAC,CAACR,IAAI,CAAC,YAAM;QACvC,IAAI,CAACO,QAAQ,IAAI,CAACC,cAAc,EAAE,OAAOE,SAAS;QAClD,MAAKH,QAAQ,GAAGA,QAAQ;QACxB,MAAKI,OAAO,CAAC,MAAKT,YAAY,CAAC;MACjC,CAAC,CAAC;IAAA;IAAA,0FAMiB;MAAA,OAAe,MAAKU,SAAS;IAAA;IAAA,yFAM9B;MAAA,OAAc,MAAKT,OAAO;IAAA;IAAA,0FAMzB;MAAA,OAAc,MAAKI,QAAQ;IAAA;IAAA,4FAMzB;MAAA,OACrB,MAAKM,UAAU,EAAE,CAACb,IAAI,CAAC,YAAM;QAC3B,MAAKO,QAAQ,GAAGG,SAAS;QACzB,MAAKP,OAAO,GAAGO,SAAS;QACxB,MAAKR,YAAY,GAAGQ,SAAS;MAC/B,CAAC,CAAC;IAAA;IAAA;EAAA;EAAA;AAAA,EA5EmCI,8BAAO;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-plugin-llm",
3
- "version": "3.0.0-beta.39",
3
+ "version": "3.0.0-beta.391",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "main": "dist/index.js",
@@ -14,8 +14,8 @@
14
14
  "node": ">=16"
15
15
  },
16
16
  "dependencies": {
17
- "@webex/internal-plugin-llm": "3.0.0-beta.39",
18
- "@webex/internal-plugin-mercury": "3.0.0-beta.39"
17
+ "@webex/internal-plugin-llm": "3.0.0-beta.391",
18
+ "@webex/internal-plugin-mercury": "3.0.0-beta.391"
19
19
  },
20
20
  "browserify": {
21
21
  "transform": [
@@ -24,8 +24,8 @@
24
24
  ]
25
25
  },
26
26
  "devDependencies": {
27
- "@webex/test-helper-chai": "3.0.0-beta.39",
28
- "@webex/test-helper-mock-webex": "3.0.0-beta.39",
27
+ "@webex/test-helper-chai": "3.0.0-beta.391",
28
+ "@webex/test-helper-mock-webex": "3.0.0-beta.391",
29
29
  "sinon": "^9.2.4"
30
30
  }
31
31
  }
package/src/llm.ts CHANGED
@@ -49,7 +49,6 @@ export default class LLMChannel extends (Mercury as any) implements ILLMChannel
49
49
  * @type {Boolean}
50
50
  * @public
51
51
  */
52
- private registered = false;
53
52
 
54
53
  private webSocketUrl?: string;
55
54
 
@@ -57,18 +56,6 @@ export default class LLMChannel extends (Mercury as any) implements ILLMChannel
57
56
 
58
57
  private locusUrl?: string;
59
58
 
60
- /**
61
- * Initializes the LLM Plugin
62
- * @constructor
63
- * @public
64
- */
65
- constructor(...args) {
66
- // eslint-disable-next-line constructor-super
67
- super(...args);
68
-
69
- this.registered = false;
70
- }
71
-
72
59
  /**
73
60
  * Register to the websocket
74
61
  * @param {string} llmSocketUrl
@@ -78,6 +65,7 @@ export default class LLMChannel extends (Mercury as any) implements ILLMChannel
78
65
  this.request({
79
66
  method: 'POST',
80
67
  url: llmSocketUrl,
68
+ body: {deviceUrl: this.webex.internal.device.url},
81
69
  })
82
70
  .then((res: {body: {webSocketUrl: string; binding: string}}) => {
83
71
  this.webSocketUrl = res.body.webSocketUrl;
@@ -98,20 +86,18 @@ export default class LLMChannel extends (Mercury as any) implements ILLMChannel
98
86
  this.register(datachannelUrl).then(() => {
99
87
  if (!locusUrl || !datachannelUrl) return undefined;
100
88
  this.locusUrl = locusUrl;
101
- this.connect(this.webSocketUrl).then(() => {
102
- this.registered = true;
103
- });
89
+ this.connect(this.webSocketUrl);
104
90
  });
105
91
 
106
92
  /**
107
93
  * Tells if LLM socket is connected
108
- * @returns {boolean} isRegistered
94
+ * @returns {boolean} connected
109
95
  */
110
- public isConnected = (): boolean => this.registered;
96
+ public isConnected = (): boolean => this.connected;
111
97
 
112
98
  /**
113
- * Tells if LLM socket is connected
114
- * @returns {bool} isRegistered
99
+ * Tells if LLM socket is binding
100
+ * @returns {string} binding
115
101
  */
116
102
  public getBinding = (): string => this.binding;
117
103
 
@@ -127,7 +113,6 @@ export default class LLMChannel extends (Mercury as any) implements ILLMChannel
127
113
  */
128
114
  public disconnectLLM = (): Promise<void> =>
129
115
  this.disconnect().then(() => {
130
- this.registered = false;
131
116
  this.locusUrl = undefined;
132
117
  this.binding = undefined;
133
118
  this.webSocketUrl = undefined;
@@ -20,7 +20,9 @@ describe('plugin-llm', () => {
20
20
  });
21
21
 
22
22
  llmService = webex.internal.llm;
23
- llmService.connect = sinon.stub().resolves(true);
23
+ llmService.connect = sinon.stub().callsFake(() => {
24
+ llmService.connected = true;
25
+ });
24
26
  llmService.disconnect = sinon.stub().resolves(true);
25
27
  llmService.request = sinon.stub().resolves({
26
28
  headers: {},
@@ -65,6 +67,7 @@ describe('plugin-llm', () => {
65
67
  sinon.match({
66
68
  method: 'POST',
67
69
  url: `${datachannelUrl}`,
70
+ body: {deviceUrl: webex.internal.device.url},
68
71
  })
69
72
  );
70
73