May I Ask Who's Calling - Google Call Screen

In an effort to kill off robocaller spam, Google rolled out a Call Screen feature in their Pixel line of devices back in 2018 and expanded it's use in the years afterward. Once someone calls, you can choose to send them to Google Assistant to interact with the caller, and you then get a transcript of what they are calling about.

Figure 1: Sample Call Screen

Google supposedly doesn't get any data from this so the transcripts gets saved locally only. To our benefit this is where the parsing comes. We can get the main SQLite database as the following path:

data/data/com.google.android.dialer/databases/callscreen_transcripts

There is only one table of interest and that is "Transcript". In the table, there were only a few columns that we really care about.

  • conversation - the transcript of the call, with some timestamps of each conversation entry, all in a protobuf blob
  • audioRecordingFilePath - the local file path of audio recorded during the call screen
  • lastModifiedMillis - the last modified timestamp of the call entry, in Unix Epoch millisecond format
Figure 2: callscreen_transcripts in DB Browser for SQLite

Utilizing Yogesh's BlackBox Protobuf library we can pull out the useful information from the conversation blobs and format it nicely for our output.

The .m4a file recordings from the phone dump at the following path:

data/data/com.google.android.dialer/files/callscreenrecordings

Since we are also pulling those recordings back, we can also embed those into a player along with our transcripts into the ALEAPP report.

Figure 3: Google Call Screen report in ALEAPP

The latest build of ALEAPP now has this parser included, as always reach out if you have questions.