1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
# Bluetooth PBAP Service
## Overview
Bluetooth PBAP service reports respective vCard phonebook data from BlueZ via communication with PBAP profile
## Verbs
| Name | Description | JSON Response |
|-------------|--------------------------------------------|----------------------------------------------------|
| subscribe | subscribe to Bluetooth PBAP events | *Request:* {"value": "status"} |
| unsubscribe | unsubscribe to Bluetooth PBAP events | *Request:* {"value": "status"} |
| import | request contact data from connected device | see **import verb section** |
| contacts | return all contacts from connected device | see **contacts verb section** |
| entry | return vCard data from handle | see **entry verb section** |
| history | return call history list | see **history verb section** |
| search | search for respective vCard handle | see **search verb section** |
| status | current device connection status | same response as noted in **status event section** |
### import Verb
Requests phonebook from connected device via OBEX transfers, caches the results to a database, and
returns a response as documented in the **contacts verb section**
### contacts Verb
Returns all vCards that are accessible from respective connected device in concatenated output
from the cached database.
NOTE: This doesn't request refreshed data from device
<pre>
"response": {
"vcards": [
{
"fn": "Art McGee",
"photo": {
"mimetype": "image/jpeg",
"data": 'BASE64 IMAGE BLOB HERE'
},
"telephone": [
{
"CELL": "+13305551212"
}
]
},
...
]
}
</pre>
### search Verb
Example of a request for vCard search using **number** parameter (i.e. *{"number":"+15035551212"}*) results:
<pre>
"response": {
"results": [
{
"handle": "27e.vcf",
"name": "Art McGee"
}
]
} },
</pre>
### entry Verb
Client must pass one of the following values to the **list** parameter in request:
| Value | Description |
|---------------|--------------------------------------------------|
| ich | Incoming calls |
| och | Outgoing calls |
| mch | Missed calls |
| cch | Combined calls (e.g. incoming, outgoing, missed) |
| pb | Phonebook (typically selected) |
Also there is a **handle** parameter that must be in form of vCard path (e.g. 27e.vcf).
Response is the same as noted in the **contacts** verb
### history Verb
Client must pass one of the following values to the list parameter in request:
| Value | Description |
|---------------|--------------------------------------------------|
| ich | Incoming calls |
| och | Outgoing calls |
| mch | Missed calls |
| cch | Combined calls (e.g. incoming, outgoing, missed) |
Sample request for a combined list (i.e. *{"list":"cch"}*) and its respective response:
<pre>
"response": {
"vcards": [
{
"fn": "Art McGee"
"type": "DIALED",
"timestamp": "20190509T193422",
"telephone": "+13305551212"
},
{
"fn": "UNKNOWN CALLER",
"type": "MISSED",
"timestamp": "20190426T014109",
"telephone": "+15035551212"
},
{
"fn": "Satoshi Nakamoto"
"type": "RECEIVED",
"timestamp": "20190421T090123",
"telephone": "+13605551212"
}
]
}
</pre>
## Events
Respective binding only outputs one event that signals if an PBAP capable device is connected
### status Event
Sample of a Bluetooth PBAP status event:
<pre>
{
"connected": true
}
</pre>
|