@robono/server 0.21.0 → 0.23.0
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/CHANGELOG.md +12 -0
- package/README.md +30 -2
- package/SBOM.spdx.json +9 -9
- package/dist/calling-session-handle.d.ts +13 -0
- package/dist/calling-session-handle.d.ts.map +1 -0
- package/dist/calling-session-handle.js +37 -0
- package/dist/calling-session-handle.js.map +1 -0
- package/dist/calling.d.ts +1 -0
- package/dist/calling.d.ts.map +1 -1
- package/dist/calling.js +1 -1
- package/dist/calling.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/location.d.ts.map +1 -1
- package/dist/location.js +3 -0
- package/dist/location.js.map +1 -1
- package/dist/messaging-extras-contract.d.ts +14 -0
- package/dist/messaging-extras-contract.d.ts.map +1 -0
- package/dist/messaging-extras-contract.js +94 -0
- package/dist/messaging-extras-contract.js.map +1 -0
- package/dist/messaging-extras.d.ts +10 -0
- package/dist/messaging-extras.d.ts.map +1 -0
- package/dist/messaging-extras.js +42 -0
- package/dist/messaging-extras.js.map +1 -0
- package/dist/messaging-notification-providers.d.ts +20 -1
- package/dist/messaging-notification-providers.d.ts.map +1 -1
- package/dist/messaging-notification-providers.js +16 -5
- package/dist/messaging-notification-providers.js.map +1 -1
- package/dist/messaging-push-worker.d.ts.map +1 -1
- package/dist/messaging-push-worker.js +22 -2
- package/dist/messaging-push-worker.js.map +1 -1
- package/dist/messenger-calling.d.ts +14 -0
- package/dist/messenger-calling.d.ts.map +1 -0
- package/dist/messenger-calling.js +173 -0
- package/dist/messenger-calling.js.map +1 -0
- package/dist/messenger-check.d.ts.map +1 -1
- package/dist/messenger-check.js +3 -1
- package/dist/messenger-check.js.map +1 -1
- package/dist/messenger-connected-templates.d.ts.map +1 -1
- package/dist/messenger-connected-templates.js +5 -2
- package/dist/messenger-connected-templates.js.map +1 -1
- package/dist/messenger-connections.d.ts +31 -0
- package/dist/messenger-connections.d.ts.map +1 -0
- package/dist/messenger-connections.js +18 -0
- package/dist/messenger-connections.js.map +1 -0
- package/dist/messenger-customer-templates.d.ts.map +1 -1
- package/dist/messenger-customer-templates.js +2 -0
- package/dist/messenger-customer-templates.js.map +1 -1
- package/dist/messenger-init.d.ts.map +1 -1
- package/dist/messenger-init.js +9 -5
- package/dist/messenger-init.js.map +1 -1
- package/dist/messenger-install-cli.js +23 -6
- package/dist/messenger-install-cli.js.map +1 -1
- package/dist/messenger-install.d.ts +11 -1
- package/dist/messenger-install.d.ts.map +1 -1
- package/dist/messenger-install.js +260 -62
- package/dist/messenger-install.js.map +1 -1
- package/dist/messenger-node.d.ts +14 -0
- package/dist/messenger-node.d.ts.map +1 -0
- package/dist/messenger-node.js +127 -0
- package/dist/messenger-node.js.map +1 -0
- package/dist/messenger-upgrade.d.ts +21 -0
- package/dist/messenger-upgrade.d.ts.map +1 -0
- package/dist/messenger-upgrade.js +136 -0
- package/dist/messenger-upgrade.js.map +1 -0
- package/dist/messenger-vite-templates.d.ts +12 -0
- package/dist/messenger-vite-templates.d.ts.map +1 -0
- package/dist/messenger-vite-templates.js +89 -0
- package/dist/messenger-vite-templates.js.map +1 -0
- package/dist/messenger.d.ts +16 -0
- package/dist/messenger.d.ts.map +1 -1
- package/dist/messenger.js +28 -1
- package/dist/messenger.js.map +1 -1
- package/legacy/0.21.0/messenger-connected-templates.js +138 -0
- package/legacy/0.21.0/messenger-customer-templates.js +111 -0
- package/legacy/0.21.0/messenger-init.js +121 -0
- package/legacy/0.21.0/messenger-install.js +243 -0
- package/legacy/0.21.0/messenger-preview-template.js +43 -0
- package/legacy/0.21.0/package.json +1 -0
- package/package.json +11 -2
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { createHash, createPrivateKey, sign } from 'node:crypto';
|
|
2
2
|
import { connect } from 'node:http2';
|
|
3
|
+
export function notificationPresentation(data, now = Date.now()) {
|
|
4
|
+
const call = data.event !== 'robono.messaging', dismissed = call && data.event.endsWith('dismissed');
|
|
5
|
+
const expires = call ? Math.floor(Date.parse(data.ring_expires_at) / 1000) : Math.floor(now / 1000) + 3600;
|
|
6
|
+
return { call, dismissed, body: call ? (data.kind === 'video' ? 'Incoming video call. Tap to answer.' : 'Incoming call. Tap to answer.') : 'Open the app to read your message.', expires: dismissed ? 0 : expires, ttl: dismissed ? 0 : Math.max(0, Math.min(3600, expires - Math.floor(now / 1000))), channel: call ? 'robono-calls' : 'robono-messages' };
|
|
7
|
+
}
|
|
3
8
|
const b64 = (data) => Buffer.from(JSON.stringify(data)).toString('base64url');
|
|
4
9
|
function jwt(header, claims, key, algorithm, p1363 = false) {
|
|
5
10
|
const body = b64(header) + '.' + b64(claims);
|
|
6
11
|
const signature = sign(algorithm, Buffer.from(body), { key: createPrivateKey(key), ...(p1363 ? { dsaEncoding: 'ieee-p1363' } : {}) });
|
|
7
12
|
return body + '.' + signature.toString('base64url');
|
|
8
13
|
}
|
|
9
|
-
function collapse(data) { return createHash('sha256').update(data.accountScope + ':' + data.conversationId).digest('hex'); }
|
|
14
|
+
function collapse(data) { return createHash('sha256').update(data.accountScope + ':' + (data.event === 'robono.messaging' ? data.conversationId : data.call_id)).digest('hex'); }
|
|
10
15
|
/** Uses only fixed Apple/Google endpoints. Private keys never enter notification payloads. */
|
|
11
16
|
export function createMessagingPushSender(options) {
|
|
12
17
|
const title = options.title?.trim() || 'New message';
|
|
@@ -51,7 +56,10 @@ export function createMessagingPushSender(options) {
|
|
|
51
56
|
return { accepted: false, invalidDevice: true, code: 'invalid_token' };
|
|
52
57
|
if (appleToken.expires <= Date.now())
|
|
53
58
|
appleToken = { value: jwt({ alg: 'ES256', kid: apple.keyId }, { iss: apple.teamId, iat: Math.floor(Date.now() / 1000) }, apple.privateKey, 'sha256', true), expires: Date.now() + 45 * 60000 };
|
|
54
|
-
const
|
|
59
|
+
const p = notificationPresentation(data);
|
|
60
|
+
if (p.call && !p.dismissed && p.ttl <= 0)
|
|
61
|
+
return { accepted: false, retryable: false, code: 'call_expired' };
|
|
62
|
+
const payload = JSON.stringify({ aps: p.dismissed ? { 'content-available': 1 } : { alert: { title: p.call ? 'Incoming call' : title, body: p.body }, sound: 'default', 'thread-id': collapse(data) }, body: data });
|
|
55
63
|
return new Promise(resolve => {
|
|
56
64
|
const session = connect(apple.sandbox ? 'https://api.sandbox.push.apple.com' : 'https://api.push.apple.com');
|
|
57
65
|
let finished = false;
|
|
@@ -59,7 +67,7 @@ export function createMessagingPushSender(options) {
|
|
|
59
67
|
return; finished = true; clearTimeout(timer); session.destroy(); resolve(result); };
|
|
60
68
|
const timer = setTimeout(() => finish({ accepted: false, retryable: true, code: 'apple_timeout' }), 15000);
|
|
61
69
|
session.on('error', () => finish({ accepted: false, retryable: true, code: 'apple_connection_failed' }));
|
|
62
|
-
const stream = session.request({ ':method': 'POST', ':path': '/3/device/' + device.token, authorization: 'bearer ' + appleToken.value, 'apns-topic': apple.bundleId, 'apns-push-type': 'alert', 'apns-priority': '10', 'apns-expiration': String(
|
|
70
|
+
const stream = session.request({ ':method': 'POST', ':path': '/3/device/' + device.token, authorization: 'bearer ' + appleToken.value, 'apns-topic': apple.bundleId, 'apns-push-type': p.dismissed ? 'background' : 'alert', 'apns-priority': p.dismissed ? '5' : '10', 'apns-expiration': String(p.expires), 'apns-collapse-id': collapse(data), 'content-type': 'application/json' });
|
|
63
71
|
let status = 0, body = '';
|
|
64
72
|
stream.setEncoding('utf8');
|
|
65
73
|
stream.on('response', headers => { status = Number(headers[':status']); });
|
|
@@ -82,10 +90,13 @@ export function createMessagingPushSender(options) {
|
|
|
82
90
|
async function sendGoogle(device, data) {
|
|
83
91
|
if (!google)
|
|
84
92
|
return { accepted: false, retryable: false, code: 'google_credentials_missing' };
|
|
93
|
+
const p = notificationPresentation(data);
|
|
94
|
+
if (p.call && !p.dismissed && p.ttl <= 0)
|
|
95
|
+
return { accepted: false, retryable: false, code: 'call_expired' };
|
|
85
96
|
const response = await request('https://fcm.googleapis.com/v1/projects/' + encodeURIComponent(google.projectId) + '/messages:send', {
|
|
86
97
|
method: 'POST', redirect: 'error', signal: AbortSignal.timeout(15000), headers: { authorization: 'Bearer ' + await googleAccess(), 'content-type': 'application/json' },
|
|
87
|
-
body: JSON.stringify({ message: { token: device.token, notification: { title
|
|
88
|
-
android: { priority: 'high', ttl: '
|
|
98
|
+
body: JSON.stringify({ message: { token: device.token, ...(!p.dismissed ? { notification: { title: p.call ? 'Incoming call' : title, body: p.body } } : {}), data,
|
|
99
|
+
android: { priority: 'high', ttl: p.ttl + 's', collapse_key: collapse(data), ...(!p.dismissed ? { notification: { tag: collapse(data), channel_id: p.channel } } : {}) } } }),
|
|
89
100
|
});
|
|
90
101
|
const result = await response.json().catch(() => null);
|
|
91
102
|
if (response.status === 401)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-notification-providers.js","sourceRoot":"","sources":["../src/messaging-notification-providers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messaging-notification-providers.js","sourceRoot":"","sources":["../src/messaging-notification-providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-push-worker.d.ts","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"messaging-push-worker.d.ts","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,eAAO,MAAM,yBAAyB,QAoDrC,CAAC"}
|
|
@@ -8,6 +8,19 @@ const store=async(value,write=false)=>new Promise((resolve,reject)=>{
|
|
|
8
8
|
request.onsuccess=()=>{const db=request.result,tx=db.transaction('state',write?'readwrite':'readonly'),s=tx.objectStore('state');
|
|
9
9
|
const r=write?s.put(value,'account'):s.get('account');let result;r.onsuccess=()=>{result=r.result;};tx.oncomplete=()=>{db.close();resolve(result);};tx.onerror=()=>{db.close();reject(Error('Notification storage unavailable'));};};
|
|
10
10
|
});
|
|
11
|
+
// Keep dismissal ordering across worker restarts. Provider delivery order is not guaranteed.
|
|
12
|
+
const callOrder=async(d)=>new Promise((resolve,reject)=>{
|
|
13
|
+
const request=indexedDB.open('robono-notifications',1);
|
|
14
|
+
request.onupgradeneeded=()=>request.result.createObjectStore('state');
|
|
15
|
+
request.onerror=()=>reject(Error('Notification storage unavailable'));
|
|
16
|
+
request.onsuccess=()=>{const db=request.result,tx=db.transaction('state','readwrite'),s=tx.objectStore('state'),read=s.get('calls');let allowed=false;
|
|
17
|
+
read.onsuccess=()=>{const rows=(Array.isArray(read.result)?read.result:[]).filter(r=>r.until>Date.now()),key=d.accountScope+':'+d.call_id,previous=rows.find(r=>r.key===key),sequence=d.event.endsWith('dismissed')?2:1;
|
|
18
|
+
allowed=!previous||sequence>previous.sequence;
|
|
19
|
+
if(allowed)s.put([...rows.filter(r=>r.key!==key),{key,sequence,until:Date.parse(d.ring_expires_at)+600000}].slice(-128),'calls');
|
|
20
|
+
};
|
|
21
|
+
tx.oncomplete=()=>{db.close();resolve(allowed);};tx.onerror=()=>{db.close();reject(Error('Notification storage unavailable'));};
|
|
22
|
+
};
|
|
23
|
+
});
|
|
11
24
|
self.addEventListener('install',()=>self.skipWaiting());
|
|
12
25
|
self.addEventListener('activate',event=>event.waitUntil(self.clients.claim()));
|
|
13
26
|
self.addEventListener('message',event=>{
|
|
@@ -19,9 +32,16 @@ self.addEventListener('message',event=>{
|
|
|
19
32
|
self.addEventListener('push',event=>event.waitUntil((async()=>{
|
|
20
33
|
let payload;try{payload=event.data.json();}catch{return;}
|
|
21
34
|
const d=payload.data,account=await store();
|
|
22
|
-
if(!account||d?.
|
|
35
|
+
if(!account||d?.accountScope!==account)return;
|
|
36
|
+
const call=['calling.incoming','calling.dismissed','calling.group_incoming','calling.group_dismissed'].includes(d.event);
|
|
37
|
+
if(call){
|
|
38
|
+
if(!/^[a-f0-9-]{36}$/.test(d.call_id)||!Number.isFinite(Date.parse(d.ring_expires_at)))return;
|
|
39
|
+
const tag=account+':call:'+d.call_id;
|
|
40
|
+
if(!await callOrder(d))return;
|
|
41
|
+
if(d.event.endsWith('dismissed')||Date.parse(d.ring_expires_at)<=Date.now()){for(const n of await self.registration.getNotifications({tag}))n.close();return;}
|
|
42
|
+
}else if(d.event!=='robono.messaging'||!/^\d+$/.test(d.messageId)||!/^[a-f0-9-]{36}$/.test(d.conversationId))return;
|
|
23
43
|
const target=new URL(payload.url);if(target.origin!==self.location.origin)return;
|
|
24
|
-
await self.registration.showNotification(String(payload.title||'New message').slice(0,80),{body:'Open the app to read your message.',tag:account+':'+d.conversationId,data:{event:d,url:target.href}});
|
|
44
|
+
await self.registration.showNotification(String(payload.title||'New message').slice(0,80),{body:call?(d.kind==='video'?'Incoming video call. Tap to answer.':'Incoming call. Tap to answer.'):'Open the app to read your message.',tag:account+':'+(call?'call:'+d.call_id:d.conversationId),data:{event:d,url:target.href}});
|
|
25
45
|
})()));
|
|
26
46
|
self.addEventListener('notificationclick',event=>{event.notification.close();event.waitUntil((async()=>{
|
|
27
47
|
const data=event.notification.data;if(data?.event?.accountScope!==await store())return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-push-worker.js","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAC,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"messaging-push-worker.js","sourceRoot":"","sources":["../src/messaging-push-worker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,CAAC,MAAM,yBAAyB,GAAC,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDhD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MessengerAccess } from './messenger.js';
|
|
2
|
+
export interface MessengerCallingOptions {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
authenticate: (request: Request) => Promise<string | null>;
|
|
5
|
+
authorize: (access: MessengerAccess) => Promise<boolean>;
|
|
6
|
+
admissionUrl?: string;
|
|
7
|
+
serviceUrl?: string;
|
|
8
|
+
connectionsUrl?: string;
|
|
9
|
+
fetch?: typeof fetch;
|
|
10
|
+
}
|
|
11
|
+
/** One authenticated host route. Call media remains peer-to-peer; only controls
|
|
12
|
+
* and authorized state pass through this adapter. Never returns a control token. */
|
|
13
|
+
export declare function createMessengerCallingAdapter(options: MessengerCallingOptions): (request: Request) => Promise<Response>;
|
|
14
|
+
//# sourceMappingURL=messenger-calling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-calling.d.ts","sourceRoot":"","sources":["../src/messenger-calling.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AACpD,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,CAAC,OAAO,EAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAC,CAAC,MAAM,EAAC,eAAe,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,YAAY,CAAC,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAC;IAAA,cAAc,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAC;CACnF;AAGD;oFACoF;AACpF,wBAAgB,6BAA6B,CAAC,OAAO,EAAC,uBAAuB,IAK/D,SAAQ,OAAO,KAAE,OAAO,CAAC,QAAQ,CAAC,CAiG/C"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { RobonoCallingBackend } from './calling.js';
|
|
2
|
+
import { RobonoMessengerConnections } from './messenger-connections.js';
|
|
3
|
+
import { createCallingSessionHandles } from './calling-session-handle.js';
|
|
4
|
+
import { RobonoError } from './errors.js';
|
|
5
|
+
const operations = new Set(['setup', 'session', 'availability', 'state', 'start', 'answer', 'candidate', 'connected', 'hold', 'sharing', 'end', 'failed', 'ice', 'close', 'history', 'unanswered', 'telemetry', 'client-info', 'groups/state', 'groups/availability', 'groups/start', 'groups/join', 'groups/leave', 'groups/description', 'groups/candidate', 'groups/connected', 'groups/hold', 'groups/sharing', 'groups/failed', 'groups/ice']);
|
|
6
|
+
const conversationId = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
7
|
+
/** One authenticated host route. Call media remains peer-to-peer; only controls
|
|
8
|
+
* and authorized state pass through this adapter. Never returns a control token. */
|
|
9
|
+
export function createMessengerCallingAdapter(options) {
|
|
10
|
+
const serviceUrl = (options.serviceUrl ?? 'https://transcode.robono.com/calling/v1').replace(/\/$/, '');
|
|
11
|
+
const backend = new RobonoCallingBackend({ apiKey: options.apiKey, serviceUrl, admissionUrl: options.admissionUrl ?? 'https://api.robono.com/v1/calling', ...(options.fetch ? { fetch: options.fetch } : {}) });
|
|
12
|
+
const connections = new RobonoMessengerConnections({ apiKey: options.apiKey, ...(options.connectionsUrl ? { baseUrl: options.connectionsUrl } : {}), ...(options.fetch ? { fetch: options.fetch } : {}) });
|
|
13
|
+
const handles = createCallingSessionHandles(options.apiKey, serviceUrl);
|
|
14
|
+
return async (request) => {
|
|
15
|
+
const reply = (body, status = 200) => Response.json(body, { status, headers: { 'cache-control': 'no-store' } });
|
|
16
|
+
const fail = (code, status = 403) => { throw Object.assign(Error(code), { status }); };
|
|
17
|
+
try {
|
|
18
|
+
const actorId = await options.authenticate(request);
|
|
19
|
+
if (!actorId)
|
|
20
|
+
return reply({ error: 'authentication_required' }, 401);
|
|
21
|
+
const raw = await request.text();
|
|
22
|
+
if (raw.length > 262144)
|
|
23
|
+
return reply({ error: 'request_too_large' }, 413);
|
|
24
|
+
let body;
|
|
25
|
+
try {
|
|
26
|
+
body = JSON.parse(raw);
|
|
27
|
+
if (!body || typeof body !== 'object' || Array.isArray(body))
|
|
28
|
+
throw Error();
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return reply({ error: 'invalid_calling_request' }, 422);
|
|
32
|
+
}
|
|
33
|
+
const operation = String(body.operation);
|
|
34
|
+
if (!operations.has(operation))
|
|
35
|
+
return reply({ error: 'operation_not_allowed' }, 403);
|
|
36
|
+
const input = body.input === undefined ? {} : body.input;
|
|
37
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
38
|
+
return reply({ error: 'invalid_calling_request' }, 422);
|
|
39
|
+
const authorize = async (context) => {
|
|
40
|
+
if (await options.authenticate(request) !== actorId)
|
|
41
|
+
fail('authentication_required', 401);
|
|
42
|
+
return options.authorize({ actorId, operation: 'calling.' + operation, input, request, ...(context ? { conversationId: context.conversationId } : {}) });
|
|
43
|
+
};
|
|
44
|
+
if (operation === 'setup' || operation === 'session') {
|
|
45
|
+
if (!await authorize())
|
|
46
|
+
fail('operation_not_allowed');
|
|
47
|
+
const appearance = await backend.appearance();
|
|
48
|
+
if (operation === 'setup')
|
|
49
|
+
return reply(appearance);
|
|
50
|
+
if (appearance.features && !appearance.features.voice && !appearance.features.video)
|
|
51
|
+
return reply({ ...appearance, disabled: true });
|
|
52
|
+
const session = await backend.createSession(actorId);
|
|
53
|
+
// Older services lack the separate hint credential: fail closed, never
|
|
54
|
+
// fall back to giving the embedded client a full control credential.
|
|
55
|
+
if (!session.eventsToken || !await authorize()) {
|
|
56
|
+
await (options.fetch ?? fetch)(serviceUrl + '/close', { method: 'POST', headers: { authorization: 'Bearer ' + session.token, 'content-type': 'application/json' }, body: '{}', signal: AbortSignal.timeout(4500), redirect: 'error' }).catch(() => { });
|
|
57
|
+
fail(session.eventsToken ? 'operation_not_allowed' : 'calling_service_update_required', session.eventsToken ? 403 : 503);
|
|
58
|
+
}
|
|
59
|
+
return reply({ handle: handles.seal(actorId, session), eventsToken: session.eventsToken, serviceUrl, expiresAt: session.expiresAt, ...appearance });
|
|
60
|
+
}
|
|
61
|
+
const session = handles.open(body.handle, actorId);
|
|
62
|
+
const remote = async (op, payload = {}) => {
|
|
63
|
+
const response = await (options.fetch ?? fetch)(serviceUrl + '/' + op, { method: 'POST', redirect: 'error', signal: AbortSignal.any([request.signal, AbortSignal.timeout(7500)]), headers: { authorization: 'Bearer ' + session.token, 'content-type': 'application/json' }, body: JSON.stringify(payload) });
|
|
64
|
+
const value = await response.json().catch(() => null);
|
|
65
|
+
if (!response.ok)
|
|
66
|
+
fail(typeof value?.error === 'string' ? value.error : 'calling_unavailable', response.status);
|
|
67
|
+
if (!value || typeof value !== 'object')
|
|
68
|
+
fail('calling_unavailable', 503);
|
|
69
|
+
return value;
|
|
70
|
+
};
|
|
71
|
+
// A signed-in owner may always release their own encrypted session.
|
|
72
|
+
if (operation === 'close')
|
|
73
|
+
return reply(await remote('close'));
|
|
74
|
+
const resolved = new Map();
|
|
75
|
+
const context = (id) => {
|
|
76
|
+
if (typeof id !== 'string' || id.length > 100)
|
|
77
|
+
fail('calling_conversation_unavailable', 404);
|
|
78
|
+
const key = id;
|
|
79
|
+
let value = resolved.get(key);
|
|
80
|
+
if (!value) {
|
|
81
|
+
value = connections.callingContext(actorId, conversationId.test(key) ? { conversationId: key } : { connectionId: key });
|
|
82
|
+
resolved.set(key, value);
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
};
|
|
86
|
+
const permitted = async (id) => { const c = await context(id); if (!await authorize(c))
|
|
87
|
+
fail('operation_not_allowed'); return c; };
|
|
88
|
+
const isGroup = operation.startsWith('groups/'), action = operation.replace(/^groups\//, '');
|
|
89
|
+
if (action === 'state') {
|
|
90
|
+
const state = await remote(operation, input), call = state.call;
|
|
91
|
+
if (!call) {
|
|
92
|
+
if (!await authorize())
|
|
93
|
+
fail('operation_not_allowed');
|
|
94
|
+
return reply(state);
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const c = await permitted(call.connectionId);
|
|
98
|
+
return reply({ ...state, call: { ...call, connectionId: c.conversationId } });
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (error instanceof RobonoError && ![401, 403, 404, 410].includes(error.status ?? 0))
|
|
102
|
+
throw error;
|
|
103
|
+
if (!(error instanceof RobonoError) && ![401, 403, 404, 410].includes(Number(error.status)))
|
|
104
|
+
throw error;
|
|
105
|
+
if (call.controlled)
|
|
106
|
+
await remote(isGroup ? 'groups/leave' : 'end', { callId: call.id }).catch(() => { });
|
|
107
|
+
if (Number(error.status) === 401)
|
|
108
|
+
throw error;
|
|
109
|
+
return reply({ version: state.version, voiceAvailable: false, videoAvailable: false, call: null });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (action === 'history') {
|
|
113
|
+
if (!await authorize())
|
|
114
|
+
fail('operation_not_allowed');
|
|
115
|
+
const filter = input.connectionId === undefined ? undefined : await permitted(input.connectionId);
|
|
116
|
+
const page = await remote(operation, { ...input, ...(filter ? { connectionId: filter.connectionId } : {}) });
|
|
117
|
+
const entries = [];
|
|
118
|
+
for (const entry of (Array.isArray(page.entries) ? page.entries : []).slice(0, 100)) {
|
|
119
|
+
try {
|
|
120
|
+
const c = await permitted(entry.connectionId);
|
|
121
|
+
entries.push({ ...entry, connectionId: c.conversationId });
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (![401, 403, 404, 410].includes(Number(error.status)))
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (await options.authenticate(request) !== actorId)
|
|
129
|
+
fail('authentication_required', 401);
|
|
130
|
+
return reply({ ...page, entries });
|
|
131
|
+
}
|
|
132
|
+
if (operation === 'client-info') {
|
|
133
|
+
if (!await authorize())
|
|
134
|
+
fail('operation_not_allowed');
|
|
135
|
+
return reply(await remote(operation, input));
|
|
136
|
+
}
|
|
137
|
+
let c;
|
|
138
|
+
if (['start', 'availability'].includes(action) || action === 'ice' && input.callId === undefined) {
|
|
139
|
+
c = await permitted(input.connectionId);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Never authorize an action against a client-claimed conversation while
|
|
143
|
+
// executing it on a different callId. Read the actual call first.
|
|
144
|
+
let state = await remote(operation === 'unanswered' ? 'unanswered' : isGroup ? 'groups/state' : 'state', operation === 'unanswered' ? { callId: input.callId } : { mediaKinds: ['voice', 'video'] });
|
|
145
|
+
if (operation === 'telemetry' && state.call?.id !== input.callId)
|
|
146
|
+
state = await remote('groups/state', { mediaKinds: ['voice', 'video'] });
|
|
147
|
+
const call = operation === 'unanswered' ? state : state.call;
|
|
148
|
+
if (!call || call.id !== input.callId && call.callId !== input.callId)
|
|
149
|
+
fail('call_not_found', 404);
|
|
150
|
+
c = await permitted(call.connectionId);
|
|
151
|
+
if (operation === 'unanswered')
|
|
152
|
+
return reply({ ...state, connectionId: c.conversationId });
|
|
153
|
+
}
|
|
154
|
+
if ((c.kind === 'group') !== isGroup && operation !== 'telemetry')
|
|
155
|
+
fail('invalid_call_kind', 422);
|
|
156
|
+
const result = await remote(operation, { ...input, connectionId: c.connectionId });
|
|
157
|
+
if (!await authorize(c)) {
|
|
158
|
+
const call = result.call ?? result;
|
|
159
|
+
if (call.controlled && call.id)
|
|
160
|
+
await remote(isGroup ? 'groups/leave' : 'end', { callId: call.id }).catch(() => { });
|
|
161
|
+
fail('operation_not_allowed');
|
|
162
|
+
}
|
|
163
|
+
return reply({ ...result, ...(result.connectionId ? { connectionId: c.conversationId } : {}), ...(result.call ? { call: { ...result.call, connectionId: c.conversationId } } : {}) });
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
if (error instanceof RobonoError)
|
|
167
|
+
return reply({ error: error.code }, error.status ?? 503);
|
|
168
|
+
const status = Number(error.status);
|
|
169
|
+
return reply({ error: status >= 400 && status < 500 ? error.message : 'calling_unavailable' }, status >= 400 && status < 600 ? status : 503);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=messenger-calling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-calling.js","sourceRoot":"","sources":["../src/messenger-calling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-check.d.ts","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAAE,IAAI,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,QAAQ,GAAC,QAAQ,GAAC,cAAc,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC;AACxG,kGAAkG;AAClG,wBAAsB,yBAAyB,CAAC,OAAO,EAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;CAAC,GAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"messenger-check.d.ts","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAAE,IAAI,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,QAAQ,GAAC,QAAQ,GAAC,cAAc,CAAC;IAAA,MAAM,EAAC,MAAM,CAAA;CAAC;AACxG,kGAAkG;AAClG,wBAAsB,yBAAyB,CAAC,OAAO,EAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;CAAC,GAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiB7J"}
|
package/dist/messenger-check.js
CHANGED
|
@@ -18,8 +18,10 @@ export async function checkRobonoMessengerSetup(options) {
|
|
|
18
18
|
await run('Signed-in messaging', async () => { const r = await post({ operation: 'settings' }), d = await r.json(); return { status: r.ok && d.settings ? 'passed' : 'failed', detail: r.ok && d.settings ? 'The test user can load messaging settings.' : 'Connect the test user’s sign-in and current messaging permission.' }; });
|
|
19
19
|
await run('Contacts and conversations', async () => { const r = await post({ operation: 'conversations' }), d = await r.json(); const rows = d.conversations; return { status: !r.ok || !Array.isArray(rows) ? 'failed' : rows.length ? 'passed' : 'needs-action', detail: !r.ok || !Array.isArray(rows) ? 'The signed-in user cannot load chats.' : rows.length ? 'Authorized chats are available.' : 'Connect a second test user and synchronize their permitted relationship.' }; });
|
|
20
20
|
await run('Server-only operations', async () => { const r = await post({ operation: 'erase-user', userId: 'robono-check-never-delete' }); return { status: r.status === 403 ? 'passed' : 'failed', detail: r.status === 403 ? 'Account deletion is blocked from the public chat route.' : 'The browser route must reject server-only account operations.' }; });
|
|
21
|
-
await run('Notification connection', async () => { const r = await post({ operation: 'notification-status' }, true, options.origin, 'notifications'), d = await r.json(); return { status: !r.ok || !Array.isArray(d.providers) ? 'failed' : d.providers.length ? 'passed' : 'needs-action', detail: !r.ok ? 'Update the server package and enable managed notifications.' : d.providers?.length ? 'Connected providers: ' + d.providers.filter((name) => ['
|
|
21
|
+
await run('Notification connection', async () => { const r = await post({ operation: 'notification-status' }, true, options.origin, 'notifications'), d = await r.json(); return { status: !r.ok || !Array.isArray(d.providers) ? 'failed' : d.providers.length ? 'passed' : 'needs-action', detail: !r.ok ? 'Update the server package and enable managed notifications.' : d.providers?.length ? 'Connected providers: ' + d.providers.filter((name) => ['apns', 'fcm', 'web', 'apple', 'google'].includes(String(name))).join(', ') + '. A real background alert still needs testing.' : 'Connect website, Apple or Google settings in Your app → Message notifications.' }; });
|
|
22
22
|
await run('Browser notification helper', async () => { const u = new URL(url); u.searchParams.set('service', 'push-worker'); const r = await request(u, { redirect: 'error', signal: AbortSignal.timeout(15000) }); const ok = r.ok && r.headers.get('content-type')?.includes('javascript') && r.headers.get('service-worker-allowed') === '/robono-notifications/'; return { status: ok ? 'passed' : 'needs-action', detail: ok ? 'Your route serves the browser helper without replacing an existing worker.' : 'For browser alerts, mount GET as well as POST on the combined route.' }; });
|
|
23
|
+
await run('Call configuration', async () => { const r = await post({ operation: 'setup' }, true, options.origin, 'calling'), d = await r.json(); return { status: r.ok && d.features ? 'passed' : 'failed', detail: r.ok && d.features ? (d.features.voice || d.features.video ? 'The supplied call screens can read the selected voice/video options. A real call still needs testing.' : 'Calling is not selected for this project.') : 'Connect calling permissions on the combined route and update the server package.' }; });
|
|
24
|
+
await run('Maps connection', async () => { const r = await post({ operation: 'settings' }, true, options.origin, 'location'), d = await r.json(); return { status: r.ok && d.settings ? 'passed' : 'failed', detail: r.ok && d.settings ? (d.settings.enabled ? 'Maps settings load through the same signed-in route. Register the website or both phone app IDs in Maps setup before opening real maps.' : 'Maps is not selected for this project.') : 'Connect location permissions on the combined route and update the server package.' }; });
|
|
23
25
|
return checks;
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=messenger-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-check.js","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"messenger-check.js","sourceRoot":"","sources":["../src/messenger-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-connected-templates.d.ts","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAAC,QAAQ,GAAC,UAAU,GAAC,UAAU,CAAC;AACjE,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,OAAO,EAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"messenger-connected-templates.d.ts","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAAC,QAAQ,GAAC,UAAU,GAAC,UAAU,CAAC;AACjE,wBAAgB,uBAAuB,CAAC,KAAK,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,OAAO,EAAC,uBAAuB,0BAuIlG"}
|
|
@@ -28,6 +28,9 @@ return verify(request);
|
|
|
28
28
|
}`;
|
|
29
29
|
files['server/robono-access.ts'] = `import type {MessengerAccess} from '@robono/server';\n${setup}\n\n// Keep YOUR current eligibility, suspension and membership checks here.
|
|
30
30
|
// Signing in does not grant permission to every conversation.
|
|
31
|
+
// Account-level settings and calling.session/calling.setup have no conversation ID.
|
|
32
|
+
// Chat calls, media and extras need their own current permissions; location uses
|
|
33
|
+
// directed viewer grants. Do not treat every operation as sending a text.
|
|
31
34
|
export async function authorize(access:MessengerAccess):Promise<boolean>{
|
|
32
35
|
throw Error('Connect your existing messaging permission check in robono-access.ts');
|
|
33
36
|
}
|
|
@@ -56,11 +59,11 @@ export function RobonoChat({userId,getAccessToken,contacts,onReady,onSignOut}:{u
|
|
|
56
59
|
import {createExpoMessenger,ExpoMessenger,type ExpoMessengerProps} from '@robono/messaging-react-native/expo';
|
|
57
60
|
type Connection=ReturnType<typeof createExpoMessenger>;
|
|
58
61
|
export function RobonoChat({userId,getAccessToken,contacts,isCallActive,onReady,onSignOut}:{userId:string;getAccessToken:()=>Promise<string>;contacts?:ExpoMessengerProps['contacts'];isCallActive?:()=>boolean;onSignOut?:()=>Promise<void>;onReady?:(connection:Connection|null)=>void}){
|
|
59
|
-
const latest=useRef({userId,getAccessToken,isCallActive,onReady});latest.current={userId,getAccessToken,isCallActive,onReady};
|
|
62
|
+
const latest=useRef({userId,getAccessToken,isCallActive,onReady,contacts});latest.current={userId,getAccessToken,isCallActive,onReady,contacts};
|
|
60
63
|
const [active,setActive]=useState<{userId:string;connection:Connection}|null>(null);
|
|
61
64
|
useEffect(()=>{
|
|
62
65
|
const token=async()=>{if(latest.current.userId!==userId)throw Error('Account changed.');const value=await latest.current.getAccessToken();if(latest.current.userId!==userId)throw Error('Account changed.');return value;};
|
|
63
|
-
const connection=createExpoMessenger({endpoint:${q(options.origin + '/api/robono')},userId,getAccessToken:token,isCallActive:()=>latest.current.isCallActive?.()??false});
|
|
66
|
+
const connection=createExpoMessenger({endpoint:${q(options.origin + '/api/robono')},userId,getAccessToken:token,people:()=>latest.current.contacts??{},isCallActive:()=>latest.current.isCallActive?.()??false});
|
|
64
67
|
setActive({userId,connection});latest.current.onReady?.(connection);
|
|
65
68
|
return()=>{latest.current.onReady?.(null);connection.dispose();};
|
|
66
69
|
},[userId]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-connected-templates.js","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAE7E,MAAM,UAAU,uBAAuB,CAAC,KAA2B,EAAC,OAA+B;IAClG,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,EAAC,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,EAAC,CAAC,GAAC,IAAI,CAAC,SAAS,CAAC;IACpF,IAAG,CAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAC,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpH,IAAG,QAAQ,KAAG,QAAQ,EAAC,CAAC;QACvB,MAAM,KAAK,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA;;;;;;;;;;;EAWlC,CAAA,CAAC,CAAA;;;;;;;;;;EAUD,CAAC;QACD,KAAK,CAAC,yBAAyB,CAAC,GAAC,yDAAyD,KAAK
|
|
1
|
+
{"version":3,"file":"messenger-connected-templates.js","sourceRoot":"","sources":["../src/messenger-connected-templates.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAE7E,MAAM,UAAU,uBAAuB,CAAC,KAA2B,EAAC,OAA+B;IAClG,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,EAAC,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,EAAC,CAAC,GAAC,IAAI,CAAC,SAAS,CAAC;IACpF,IAAG,CAAC,CAAC,QAAQ,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAC,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpH,IAAG,QAAQ,KAAG,QAAQ,EAAC,CAAC;QACvB,MAAM,KAAK,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA;;;;;;;;;;;EAWlC,CAAA,CAAC,CAAA;;;;;;;;;;EAUD,CAAC;QACD,KAAK,CAAC,yBAAyB,CAAC,GAAC,yDAAyD,KAAK;;;;;;;;CAQhG,CAAC;QACA,KAAK,CAAC,cAAc,CAAC,IAAE,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4MAA4M,CAAA,CAAC,CAAA,8HAA8H,CAAC;IAC1X,CAAC;IACD,KAAK,CAAC,uBAAuB,CAAC,GAAC,GAAG,CAAA,CAAC,CAAA;;;;;;;;;;;wFAWoD,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;;;;;;;CAO7G,CAAA,CAAC,CAAA;;;;;;;;mDAQiD,CAAC,CAAC,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC;;;;;6EAKL,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;;CAElG,CAAC;IACD,KAAK,CAAC,gCAAgC,CAAC,GAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxC,CAAC;IACD,IAAG,QAAQ,KAAG,UAAU;QAAC,KAAK,CAAC,2BAA2B,CAAC,GAAC;;;;;;;;;;;;;;;;CAgB5D,CAAC;IACD,IAAG,QAAQ,KAAG,UAAU;QAAC,KAAK,CAAC,2BAA2B,CAAC,GAAC;;;;;;;;;;CAU5D,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,IAAE,4BAA4B,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,2FAA2F,CAAA,CAAC,CAAA,kDAAkD,GAAC,CAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,iBAAiB,CAAA,CAAC,CAAA,wBAAwB,CAAC,GAAC,4CAA4C,+5BAA+5B,CAAC;IACxuC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type MessagingBackendOptions } from './messaging.js';
|
|
2
|
+
export interface MessengerContactInput {
|
|
3
|
+
externalUserIds: [string, string];
|
|
4
|
+
/** Permission to communicate through the services selected in Robono. */
|
|
5
|
+
allowed: boolean;
|
|
6
|
+
/** Your persisted contact revision. Identical retries are safe. */
|
|
7
|
+
revision: number;
|
|
8
|
+
/** Optional restrictions for this pair; these never enable a service or paid extra. */
|
|
9
|
+
permissions?: Partial<Record<'calling' | 'video' | 'screenSharing', boolean>>;
|
|
10
|
+
}
|
|
11
|
+
export interface MessengerCallingContext {
|
|
12
|
+
conversationId: string;
|
|
13
|
+
connectionId: string;
|
|
14
|
+
kind: 'direct' | 'group';
|
|
15
|
+
}
|
|
16
|
+
/** Server-only contact synchronization and authoritative calling/chat ID mapping. */
|
|
17
|
+
export declare class RobonoMessengerConnections {
|
|
18
|
+
private backend;
|
|
19
|
+
constructor(options: MessagingBackendOptions);
|
|
20
|
+
synchronizeContact(input: MessengerContactInput): Promise<{
|
|
21
|
+
conversationId: string;
|
|
22
|
+
connectionId: string;
|
|
23
|
+
revision: number;
|
|
24
|
+
}>;
|
|
25
|
+
callingContext(actorId: string, input: {
|
|
26
|
+
conversationId: string;
|
|
27
|
+
} | {
|
|
28
|
+
connectionId: string;
|
|
29
|
+
}): Promise<MessengerCallingContext>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=messenger-connections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-connections.d.ts","sourceRoot":"","sources":["../src/messenger-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AACnF,MAAM,WAAW,qBAAqB;IACrC,eAAe,EAAC,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;IAChC,yEAAyE;IACzE,OAAO,EAAC,OAAO,CAAC;IAChB,mEAAmE;IACnE,QAAQ,EAAC,MAAM,CAAC;IAChB,uFAAuF;IACvF,WAAW,CAAC,EAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAC,OAAO,GAAC,eAAe,EAAC,OAAO,CAAC,CAAC,CAAC;CACxE;AACD,MAAM,WAAW,uBAAuB;IAAE,cAAc,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,QAAQ,GAAC,OAAO,CAAA;CAAC;AAC1G,qFAAqF;AACrF,qBAAa,0BAA0B;IACtC,OAAO,CAAC,OAAO,CAAwB;gBAC3B,OAAO,EAAC,uBAAuB;IAC3C,kBAAkB,CAAC,KAAK,EAAC,qBAAqB,GAAE,OAAO,CAAC;QAAC,cAAc,EAAC,MAAM,CAAC;QAAA,YAAY,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAA;KAAC,CAAC;IAI9G,cAAc,CAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAC;QAAC,cAAc,EAAC,MAAM,CAAA;KAAC,GAAC;QAAC,YAAY,EAAC,MAAM,CAAA;KAAC,GAAE,OAAO,CAAC,uBAAuB,CAAC;CAKzH"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RobonoMessagingBackend } from './messaging.js';
|
|
2
|
+
/** Server-only contact synchronization and authoritative calling/chat ID mapping. */
|
|
3
|
+
export class RobonoMessengerConnections {
|
|
4
|
+
backend;
|
|
5
|
+
constructor(options) { this.backend = new RobonoMessagingBackend({ ...options, baseUrl: options.baseUrl ?? 'https://api.robono.com/v1/messaging/connect' }); }
|
|
6
|
+
synchronizeContact(input) {
|
|
7
|
+
if (!Array.isArray(input.externalUserIds) || input.externalUserIds.length !== 2 || new Set(input.externalUserIds).size !== 2 || !input.externalUserIds.every(id => typeof id === 'string' && id.length > 0 && id.length <= 200 && id.trim() === id && !/[\u0000-\u001f\u007f]/.test(id)) || typeof input.allowed !== 'boolean' || !Number.isSafeInteger(input.revision) || input.revision < 1 || input.permissions !== undefined && (!input.permissions || typeof input.permissions !== 'object' || Array.isArray(input.permissions) || Object.entries(input.permissions).some(([key, value]) => !['calling', 'video', 'screenSharing'].includes(key) || typeof value !== 'boolean')))
|
|
8
|
+
throw Error('Use two user IDs, the current communication permission and its saved revision.');
|
|
9
|
+
return this.backend.request('contact', input);
|
|
10
|
+
}
|
|
11
|
+
async callingContext(actorId, input) {
|
|
12
|
+
const result = await this.backend.request('calling-context', { actorId, ...input });
|
|
13
|
+
if (typeof result?.conversationId !== 'string' || typeof result?.connectionId !== 'string' || !['direct', 'group'].includes(result.kind))
|
|
14
|
+
throw Error('Invalid calling context.');
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=messenger-connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-connections.js","sourceRoot":"","sources":["../src/messenger-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAA8B,MAAM,gBAAgB,CAAC;AAWnF,qFAAqF;AACrF,MAAM,OAAO,0BAA0B;IAC9B,OAAO,CAAwB;IACvC,YAAY,OAA+B,IAAE,IAAI,CAAC,OAAO,GAAC,IAAI,sBAAsB,CAAC,EAAC,GAAG,OAAO,EAAC,OAAO,EAAC,OAAO,CAAC,OAAO,IAAE,6CAA6C,EAAC,CAAC,CAAC,CAAA,CAAC;IAC3K,kBAAkB,CAAC,KAA2B;QAC7C,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAE,KAAK,CAAC,eAAe,CAAC,MAAM,KAAG,CAAC,IAAE,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,KAAG,CAAC,IAAE,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAA,EAAE,CAAA,OAAO,EAAE,KAAG,QAAQ,IAAE,EAAE,CAAC,MAAM,GAAC,CAAC,IAAE,EAAE,CAAC,MAAM,IAAE,GAAG,IAAE,EAAE,CAAC,IAAI,EAAE,KAAG,EAAE,IAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAE,OAAO,KAAK,CAAC,OAAO,KAAG,SAAS,IAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAE,KAAK,CAAC,QAAQ,GAAC,CAAC,IAAE,KAAK,CAAC,WAAW,KAAG,SAAS,IAAE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAE,OAAO,KAAK,CAAC,WAAW,KAAG,QAAQ,IAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAC,KAAK,CAAC,EAAC,EAAE,CAAA,CAAC,CAAC,SAAS,EAAC,OAAO,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAE,OAAO,KAAK,KAAG,SAAS,CAAC,CAAC;YAAC,MAAM,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACtrB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAC,KAA0C,CAAC,CAAC;IACnF,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,OAAc,EAAC,KAAmD;QACtF,MAAM,MAAM,GAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAC,EAAC,OAAO,EAAC,GAAG,KAAK,EAAC,CAAC,CAAC;QAC9E,IAAG,OAAO,MAAM,EAAE,cAAc,KAAG,QAAQ,IAAE,OAAO,MAAM,EAAE,YAAY,KAAG,QAAQ,IAAE,CAAC,CAAC,QAAQ,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACvK,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-customer-templates.d.ts","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"messenger-customer-templates.d.ts","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CA8GhG"}
|
|
@@ -52,6 +52,8 @@ export async function checkMessengerConnection(getAccessToken:()=>Promise<string
|
|
|
52
52
|
await run('Signed-in messaging','settings','messages',data=>({status:data.settings?'passed':'failed',detail:data.settings?'Your current account can load messaging settings.':'The route did not return messaging settings.'}));
|
|
53
53
|
if(!signal.aborted)await run('Conversations','conversations','messages',data=>({status:!Array.isArray(data.conversations)?'failed':data.conversations.length?'passed':'needs-action',detail:!Array.isArray(data.conversations)?'The route did not return conversations.':data.conversations.length?'Your account has available conversations.':'Connect a second test account and synchronize their permitted relationship from your server.'}));
|
|
54
54
|
if(!signal.aborted)await run('Notifications','notification-status','notifications',data=>({status:!Array.isArray(data.providers)?'failed':data.providers.length?'passed':'needs-action',detail:!Array.isArray(data.providers)?'Check that the server uses the current messaging package.':data.providers.length?'A notification provider is configured. Test an actual background notification next.':'Connect website or Apple/Google notification settings in Robono. Chat can work before alerts are connected.'}));
|
|
55
|
+
if(!signal.aborted)await run('Calling','setup','calling',data=>({status:data.features?'passed':'failed',detail:data.features?(data.features.voice||data.features.video?'The supplied call screens can read your selected calling options.':'Calling is not selected for this project.'):'Update the server package and connect current calling permissions.'}));
|
|
56
|
+
if(!signal.aborted)await run('Maps','settings','location',data=>({status:data.settings?'passed':'failed',detail:data.settings?(data.settings.enabled?'Maps connects through your existing account. Register your website or both phone app IDs before opening real maps.':'Maps is not selected for this project.'):'Update the server package and connect current location permissions.'}));
|
|
55
57
|
return checks;
|
|
56
58
|
}
|
|
57
59
|
`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-customer-templates.js","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,0BAA0B,CAAC,OAA+B;IACxE,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,CAAC;IACtC,MAAM,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,CAAC;IACnC,MAAM,IAAI,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,gBAAgB,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,gBAAgB,CAAC;IAChG,MAAM,UAAU,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4DAA4D,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,0CAA0C,CAAA,CAAC,CAAA,4DAA4D,CAAC;IAClO,OAAO;QACL,8BAA8B,EAAC;;;;EAIjC,UAAU;EACV,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;IAExE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM,IAAI,IAAI;;;;qCAIZ,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM;IACtE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,0DAA0D;;oBAEjE,GAAG,CAAA,CAAC,CAAA,sCAAsC,CAAA,CAAC,CAAA,SAAS;;;;CAIvE;QACG,sCAAsC,EAAC;;;mBAGxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAA,CAAC,CAAA,aAAa,CAAA,CAAC,CAAA,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC
|
|
1
|
+
{"version":3,"file":"messenger-customer-templates.js","sourceRoot":"","sources":["../src/messenger-customer-templates.ts"],"names":[],"mappings":"AAEA,yFAAyF;AACzF,MAAM,UAAU,0BAA0B,CAAC,OAA+B;IACxE,MAAM,QAAQ,GAAC,OAAO,CAAC,IAAI,IAAE,QAAQ,CAAC;IACtC,MAAM,GAAG,GAAC,OAAO,CAAC,QAAQ,KAAG,KAAK,CAAC;IACnC,MAAM,IAAI,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,gBAAgB,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,gBAAgB,CAAC;IAChG,MAAM,UAAU,GAAC,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,4DAA4D,CAAA,CAAC,CAAA,QAAQ,KAAG,UAAU,CAAA,CAAC,CAAA,0CAA0C,CAAA,CAAC,CAAA,4DAA4D,CAAC;IAClO,OAAO;QACL,8BAA8B,EAAC;;;;EAIjC,UAAU;EACV,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;IAExE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM,IAAI,IAAI;;;;qCAIZ,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,MAAM;IACtE,QAAQ,KAAG,QAAQ,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,0DAA0D;;oBAEjE,GAAG,CAAA,CAAC,CAAA,sCAAsC,CAAA,CAAC,CAAA,SAAS;;;;CAIvE;QACG,sCAAsC,EAAC;;;mBAGxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAA,CAAC,CAAA,aAAa,CAAA,CAAC,CAAA,OAAO,CAAC,MAAM,GAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhF;QACG,2BAA2B,EAAC;;EAE9B,GAAG,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCxD,GAAG,CAAA,CAAC,CAAA;;;;;YAKI,CAAA,CAAC,CAAA;;;;;WAKF;;CAEV;KACE,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger-init.d.ts","sourceRoot":"","sources":["../src/messenger-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAGtG,MAAM,WAAW,uBAAuB;IAAE,QAAQ,EAAC,KAAK,GAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,GAAC,OAAO,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,IAAI,CAAC,EAAC,qBAAqB,CAAA;CAAC;AACtJ,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"messenger-init.d.ts","sourceRoot":"","sources":["../src/messenger-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,qBAAqB,EAAC,MAAM,oCAAoC,CAAC;AAGtG,MAAM,WAAW,uBAAuB;IAAE,QAAQ,EAAC,KAAK,GAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,GAAC,OAAO,CAAC;IAAA,MAAM,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,IAAI,CAAC,EAAC,qBAAqB,CAAA;CAAC;AACtJ,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,OAAO,EAAC,uBAAuB,GAAE,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAoF3F;AACD,uFAAuF;AACvF,wBAAsB,qBAAqB,CAAC,WAAW,EAAC,MAAM,EAAC,OAAO,EAAC,uBAAuB,qBAc7F"}
|