A small helpdesk system: an office Pixel running a patched GrapheneOS Dialer answers technician calls, records both call legs as separate channels, and a Ruby backend transcribes them through Whisper and files an AI summary against the caller. Squashed to a single commit for sharing. No credentials are included; secrets live outside the repo in /etc/helpdesk/env on the server or a gitignored .claude/env.local locally. See .claude/env.local.example for the shape. Start at README.md, then docs/architecture.md.
46 lines
2.1 KiB
Diff
46 lines
2.1 KiB
Diff
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
|
|
index 44810cce5..9ce6eee26 100644
|
|
--- a/AndroidManifest.xml
|
|
+++ b/AndroidManifest.xml
|
|
@@ -114,6 +114,9 @@
|
|
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
|
|
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
|
|
|
|
+ <!-- Helpdesk patch: the idle presence heartbeat re-arms its AlarmManager schedule at boot. -->
|
|
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
|
+
|
|
<application
|
|
android:hardwareAccelerated="true"
|
|
android:icon="@mipmap/ic_launcher"
|
|
@@ -122,9 +125,30 @@
|
|
android:name="com.android.dialer.binary.aosp.AospDialerApplication"
|
|
android:appCategory="social"
|
|
android:supportsRtl="true"
|
|
- android:usesCleartextTraffic="false"
|
|
+ android:usesCleartextTraffic="true"
|
|
android:enableOnBackInvokedCallback="false"
|
|
android:extractNativeLibs="true">
|
|
+
|
|
+ <!-- Helpdesk patch: idle presence heartbeat. Schedules a periodic AlarmManager ping at boot so the
|
|
+ console shows "Phone connected" between calls (the reverse-command long-poll, which doubles as
|
|
+ the heartbeat, only runs during a call). Receives the protected BOOT_COMPLETED + the alarm tick. -->
|
|
+ <receiver
|
|
+ android:name="com.android.dialer.helpdesk.HelpdeskHeartbeat$Receiver"
|
|
+ android:exported="true"
|
|
+ android:enabled="true">
|
|
+ <intent-filter>
|
|
+ <action android:name="android.intent.action.BOOT_COMPLETED"/>
|
|
+ <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED"/>
|
|
+ </intent-filter>
|
|
+ </receiver>
|
|
+
|
|
+ <!-- Helpdesk patch: always-on reverse-command channel. Keeps CommandChannelClient polling between
|
|
+ calls so console commands (esp. click-to-dial, issued while the phone is idle) are received.
|
|
+ Typeless foreground service (permitted on targetSdk 30); started at BOOT_COMPLETED + app init. -->
|
|
+ <service
|
|
+ android:name="com.android.dialer.helpdesk.HelpdeskCommandService"
|
|
+ android:exported="false"
|
|
+ android:enabled="true"/>
|
|
</application>
|
|
|
|
</manifest>
|