Last post of the year, I hope everybody will have a wonderful 2026, even within those troubled times.

I was playing with my Yealink T42s IP phone last night, wanting to make some API endpoint that automatically generates a remote phone book for the phone.
The remote phone book uses XML formatted with custom elements that are described within their official “documentation” PDF, graciously archived here.

The PDF shows the following example (from “Yealink SIP Phones XML Browser Developer’s Guide”, page 49):

<?xml version="1.0" encoding="ISO-8859-1"?>
<YealinkIPPhoneDirectory
defaultIndex = "integer"
next = "URI"
previous = "URI"
Beep = "yes/no"
cancelAction="URI"
Timeout = "integer"
refresh=“refresh timeurl=“url“
LockIn = "yes/no">
    <Title wrap = "yes/no">Directory Title</Title>
    <URL>URL</URL>
    <InputField>
        <Parameter>name</Parameter>
        <preKey>key words of the contacts</preKey>
    </InputField>
    <MenuItem>
        <Prompt>Contact Name</Prompt>
        <URI>number</URI>
    </MenuItem>
    <!--Additional Menu Items may be added -->
    <!--Additional soft key items may be added -->
</YealinkIPPhoneDirectory>Code language: HTML, XML (xml)

However, if you try it yourself, you’ll find that when updating the phone book, no entries will show up.
This is because Yealink’s own documentation is faulty.

In reality, the phone book needs to look like this:

<?xml version="1.0" encoding="UTF-8"?>
<YealinkIPPhoneDirectory>
    <Title>PurplePBX</Title>
    <DirectoryEntry>
        <Name>Jae (desk)</Name>
        <Telephone>1911</Telephone>
    </DirectoryEntry>
</YealinkIPPhoneDirectory>Code language: HTML, XML (xml)

Replace the MenuItem by DirectoryEntry, Prompt by Name and URI by Telephone and you get a working directory.

Thank you, Yealink, for making confusing documentation, while completely removing old (and new) firmware downloads from your support site.