I should do a technical writeup - ion the meantime:

Here's a video I made mainly for myself so no polish at all: https://www.youtube.com/watch?v=jjLPGDQlgKQ

Here's the Python code: https://gist.github.com/bootrino/9c6c82e3243782da23308e50a38...

In short I installed a Raspberry Pi Zero into the case of the phone. I considered using an esp32 but the Raspberry Pi is alot more straightforward because I can simply run Linux and code in Python. On the esp32 I could write the code in C++ but it would take longer, or use micropython for esp32 but that no doubt would be harder than the Raspberry Pi.

I found several YouTube videos and also some web ages that described how to connect the rotary dialler to the GPIO pins on the Raspberry Pi, and I found some example code that captured the number dialled on the dialler.

To connect the speaker in the handset it was a little more involved. First I had to work out which wires coming out of the handset cable were the speaker wires - there were four wires coming out, two yellow and two pink. I screwed off the speaker portion of the handset and pulled out the speaker, revealing two yellow wires. The Raspberry Pi zero does not have an audio out port. So I bought the cheapest possible USB audio card for about $20 https://www.centrecom.com.au/shintaro-usb-audio-adaptor-with... and also bought a 3.5MM audio cable which I cut and stripped back the two wires and connected them to the two yellow wires from the handset speaker.

I knew that the hangup/pickup switch must allow/deny a flow of electricity, so I got out my cheap multimeter and started randomly touching parts of the phones circuit board in two places, and lifting and pressing the hangup switch. Eventually I found two points which resulted in electricity flowing or stopping when the switch went up and down, so I knew this must be right connection points, which I then connected to two of the GPIO pins on the Raspberry Pi.

I removed the wire which connected the phone to the plain on telephone line and instead put a USB power cable there.

At this point I had worked out how all the various bits and pieces worked so I wrote a Python program to tie it all together.

When the phone handset was lifted, I played a dial tone audio file. I had about 60 audio files, which I uploaded to the Linux file system. I gave each audio file a number from 100.mp3 to 160.mp3 so when a phone number was dialled, I searched a list of the files, and if the dialled number matched an mp3 filename then I played that file.

I had to remove the bells from the phone unfortunately to fit the computer in.

One of the disappointing things is that it is not possible to make the phone ring because the ringer requires a much higher voltage than can be generated by a small computer. You could probably fake this by installing a small speaker and just playing the sound of a phone ringing.

Credit should be given to the various people who've written blog posts and on YouTube who have done something like this before me - I read lots of pages and viewed lots of videos that do this in differing ways. This guy was most helpful: https://www.youtube.com/watch?v=JChn7tV_qBk. also this person is a real inspiration, she's very creative: https://www.youtube.com/channel/UCEFrHGqsKTvBXk0FC-q_iag. and this guy takes a completely different approach which does not require pulling the phone apart: https://www.youtube.com/watch?v=siwq1FxvRrw